C++类型:内置类型,复合类型和类类型

发布时间 2024-01-04 21:59:06作者: FBshark
如标题所言,C++类型基本分为三类:内置类型,复合类型和类类型。
 
  • 内置类型:编译器内置的基本类型,如int, char, float, double, bool等;
  • 复合类型:根据其它类型定义的类型,主要有这么几类:数组,字符串,指针,引用,结构体(struct),联合体(union);
  • 类类型:用struct和class定义的类。
这里需要注意这么两点:
  1. 复合类型的字符串指的是C-style字符串,本质就是char数组。STL的string类是类类型。
  2. 复合类型的结构体指的也是c-style的结构体,和类型类一样,也是用struct和class定义;和类类型的区别是,没有构造函数(包括默认构造函数)和析构函数。
比如下例:
struct A {
int a;
};
struct B {
int b;
B() {}
};
struct C {
string c;
};
其中只有A是复合类型结构体,B和C都是类类型;B因为有显式定义默认构造函数;C因为有类成员,编译器会合成默认构造函数。
 
区别struct和class是复合类型结构体还是类类型是有意义的。
 
C++中复合类型结构体变量可以直接用初始化列表赋值,而类对象不行:
struct A {
    char c;
    int i;
    double d;
};


A a={'p',7,3.1415926}; //定义时直接赋值
 
上例如果给struct A加上构造函数,那么A就变成了一个类类型,类类型不能使用初始化列表,则编译错误。
 
对于union类型,其成员就只能包含复合类型结构体,而不能有类类型。详情见:C++ union介绍。
 
 
-------------------------
该内容采用 CC BY-NC-SA 4.0 许可协议,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作者:云海鹰影
来源:C++类型:内置类型,复合类型和类类型 | 云海鹰影
链接:https://www.chaoswork.cn/20190512-12.html