struct 和class
struct
1. c++中的结构体可以有一个或多个构造函数,在声明时调用。
2. c++中的函数(不只是构造函数),参数可以有默认值。
3. c++ 结构体的成员函数中,this是指向当前队形的指针。
struct Point
{
int x,y;
Point (int x=0,y=0):x(x),y(y){}//可以默认值
};
struct Point {
int x,y;
Point (int x=0;y=0){this->x=x;this->y=y;}//也可以这样进行初始化
class
属性
- 聚合类(aggregate class),同c语言中类相同,可以直接初始化(列表初始化); 聚合类的缺点
- 要求必须是public 的
- 冗长乏味
- 删除一个或增加一个成员,所有的初始化语句都需要更新
- 7.5.6 字面值常亮类
1 如果是聚合类,要求所有的字面值2 不是聚合类- 数据成员必须是字面值类型
- 类型必须至少含有一个constexpr
- 如果一个数据成员有类内初始值,该类型成员的初始值必须为敞亮表达式,如果成员属于某种类类型,则初始值必须使用自己的contexpr构造函数
- 类必须使用析构函数的默认定义,该成员负责销毁类的对象
contexpr 构造函数一个字面值常亮类必须提供至少一个constexpr 函数
类的静态成员 static必须在类的外部初始化每个静态成员