如标题所言,C++类型基本分为三类:内置类型,复合类型和类类型。
- 内置类型:编译器内置的基本类型,如int, char, float, double, bool等;
- 复合类型:根据其它类型定义的类型,主要有这么几类:数组,字符串,指针,引用,结构体(struct),联合体(union);
- 类类型:用struct和class定义的类。
这里需要注意这么两点:
- 复合类型的字符串指的是C-style字符串,本质就是char数组。STL的string类是类类型。
- 复合类型的结构体指的也是c-style的结构体,和类型类一样,也是用struct和class定义;和类类型的区别是,没有构造函数(包括默认构造函数)和析构函数。
比如下例:
1 | struct A { |
其中只有A是复合类型结构体,B和C都是类类型;B因为有显式定义默认构造函数;C因为有类成员,编译器会合成默认构造函数。
区别struct和class是复合类型结构体还是类类型是有意义的。
C++中复合类型结构体变量可以直接用初始化列表赋值,而类对象不行:
1
2
3
4
5
6struct A {
char c;
int i;
double d;
};
A a={'p',7,3.1415926}; //定义时直接赋值上例如果给struct A加上构造函数,则编译错误。
对于union类型,其成员就只能包含复合类型结构体,而不能有类类型。详情见:C++ union介绍。