1、结构体
结构体在C语言中的使用频率非常高,C++出于历史原因兼容了结构体。但是,按照资料中所说C++的结构体同样支持多态、拥有多种控制权限、可以继承等,即结构体与类的唯一不同在于没有指明访问权限时,结构体默认为public,而类默认为private()。结构体的关键字为struct,定义如下:
struct
初始化赋值采用大括号,值对应结构体中成员的定义顺序,结构体成员的访问采用“点”,如下:
Time
按照网上的资料,一般结构体是不会定义成员函数的,通常用于数据记录的。
2、联合体
联合体采用union关键字进行定义,可以有自己的数据成员和函数成员,并可以拥有构造函数和析构函数,但是联合体不支持继承和多态。下面是联合体定义的语法:
union
结构体的各个成员的内存空间是独立的,但是联合体的全部数据成员共享同一组内存单元,比如含有两个int成员的联合体Data定义如下:
union
由于成员共享同一个内存单元,所以联合体中的多个成员只有一个是有用的:
Data
此时,对x赋值导致x和y都是666,对y赋值导致x和y都是3,即内存共享。此外需要注意,联合体的对象成员不能有自定义的构造和析构函数以及重载的赋值运算符。