C++11之前只有常静态成员变量才能进行默认初始化,其它变量初始化时总要进行繁琐的过程
class A{int a;
public:A():a(10){}
};
C++11开始支持非静态成员的默认初始化,默认初始化和初始化参数列表同时初始化一个变量时会使用初始化参数列表,不进行默认初始化
#include<iostream>
class A{int val;
public:A(int val):val(val){std::cout<<"A 构造:"<<val<<std::endl;}
};
struct B{A a={6};B():a({8}){}
};
int main(){B b;
}
C++ 20引入了位域初始化
class A{int a:8=10int b:4{20}
}