C++中,什么叫类,结构,联合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中,什么叫类,结构,联合?相关的知识,希望对你有一定的参考价值。

在C++中 class 和 struct 本质上一样 可以互用
class的成员默认是private的,struct的成员默认是public的
但一般习惯把成员变量隐藏的用class申明, 成员变量可以公开访问并且比较简单的用struct申明(个人理解是struct是从c来的,在c中就是那么用的)

至于union,不论其内部有多少成员,在任意时刻,只有一个可用,因为所有成员公用的一个地址
例如
union A
{
int a;
float f;
struct ST st;
};
中的三个变量 a,f,st的地址都是一样的,也就是在一起的,
但sizeof(A) 的大小是其中变量最大的一个的大小(不考虑字节对其啥的)
这是因为三个变量在同一地址,所以其大小必须能够满足任意一个变量使用,所以就必须使用最大的那个了

union在很多地方跟struct类似,也可以实现数据函数的封装,但有一些特别的地方。1、一个时点上只有一个成员有值,(换句话说,所有成员使用的是同一块内存)。2、不能做基类,也就没有虚函数。3、不能有静态和引用成员。4、不能嵌套类(实际上是不能拥有具有构造函数、析构函数、赋值操作的成员,如果仅仅是数据封装还是可以的)

以上是关于C++中,什么叫类,结构,联合?的主要内容,如果未能解决你的问题,请参考以下文章

C++ 成员引用基类型'Vertex *const'不是结构或联合

constexpr 在联合中初始化结构时,msvc visual c++ 静默错误代码生成

C++ 类查询错误:“”左侧必须指向类/结构/联合

如何将结构从 C++ 迁移到 C#

C++编程基础: 13. 结构体与联合体

C ++:与方法的联合?