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

属性

  1. 聚合类(aggregate class),同c语言中类相同,可以直接初始化(列表初始化); 聚合类的缺点
    1. 要求必须是public 的
    2. 冗长乏味
    3. 删除一个或增加一个成员,所有的初始化语句都需要更新
  2. 7.5.6 字面值常亮类
    1 如果是聚合类,要求所有的字面值
    2 不是聚合类
    • 数据成员必须是字面值类型
    • 类型必须至少含有一个constexpr
    • 如果一个数据成员有类内初始值,该类型成员的初始值必须为敞亮表达式,如果成员属于某种类类型,则初始值必须使用自己的contexpr构造函数
    • 类必须使用析构函数的默认定义,该成员负责销毁类的对象
    contexpr 构造函数
    一个字面值常亮类必须提供至少一个constexpr 函数

    类的静态成员 static
    必须在类的外部初始化每个静态成员