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}
}