📅  最后修改于: 2023-12-03 14:39:39.196000             🧑  作者: Mango
在C++编程中,类、结构和联合是三种主要的用户定义类型。它们在表示数据和功能的方式上有一些相似之处,但在语法和语义上有一些重要的区别。本文将对这三种类型进行详细介绍。
类是C++中最基本的用户定义类型之一。类可以包含数据成员(称为属性)和成员函数(称为方法)。它们用于表示具有共同属性和行为的对象。
类的定义以关键字 class
开始,后跟类名和类的定义体。类的定义体中可以包含公共访问(默认)、私有访问和保护访问的成员。
以下是一个类的示例:
class Person {
public:
// 公共成员函数
void setName(const std::string& name) {
this->name = name;
}
std::string getName() const {
return name;
}
private:
// 私有数据成员
std::string name;
};
在上面的示例中,Person
是一个类,它有一个私有数据成员 name
和两个公共成员函数 setName
和 getName
。
结构与类类似,也可以包含数据成员和成员函数。不同之处在于,默认情况下,结构的成员是公共访问的,而类的成员是私有访问的。
结构的定义与类类似,使用关键字 struct
,后跟结构名和结构的定义体。
以下是一个结构的示例:
struct Point {
int x;
int y;
void setCoordinates(int x, int y) {
this->x = x;
this->y = y;
}
};
在上面的示例中,Point
是一个结构,它有两个公共数据成员 x
和 y
,以及一个公共成员函数 setCoordinates
。
联合是一种特殊的数据类型,用于存储不同类型的数据,但在同一时间只能存储其中的一个。它们的存储空间大小为其最大成员的大小。
联合的定义以关键字 union
开始,后跟联合名和联合的定义体。
以下是一个联合的示例:
union Data {
int intValue;
float floatValue;
char charValue;
};
在上面的示例中,Data
是一个联合,它可以存储一个整数、一个浮点数或一个字符,但一次只能存储其中之一。
下表总结了类、结构和联合之间的一些关键区别:
| 特性 | 类 | 结构 | 联合 | | --------- | ------------------- | ---------------------- | ------------------ | | 成员访问 | 默认为私有 | 默认为公共 | 默认为公共 | | 默认继承 | 私有继承 | 公共继承 | 无继承 | | 内存布局 | 成员按照声明顺序依次 | 成员按照声明顺序依次 | 最大成员的大小 | | 可用性 | 对象实例、指针都可 | 对象实例、指针都可 | 对象实例、指针都可 | | 数据共享 | 不共享 | 不共享 | 共享 | | 数据大小 | 不计算成员大小 | 计算成员大小 | 最大成员的大小 |
以上是类、结构和联合的基本概念和区别。选择合适的类型取决于数据的组织和访问方式。
希望本文能够让你更好地理解类、结构和联合,并在C++编程中做出明智的选择!