initializer list可以初始化两种类型
1 array类 像int a[5]={0};
2 没有construct ,private ,protected 成员且没基类的uion ,struct,class。
myClass有private使就不符合条件
备注:并且其成员也应该满足这样的条件。例如,如果结构体定义为
struct _feeStandardRcd
{
CString _szGrade;
int _iMinNum;
int _iMaxNum;
double _fPrice;
};
也将不能使用initializer list 初始化,因为其成员_szGrade为CString型,该类型有构造函数;而下面的结构体则可以使用initializer list初始化:
class CMyClass
{
public:
char m_szArray[50];
double m_fNum;
};
struct MyStruct
{
double d;
int a;
int b;
CMyClass myClass;
};
如果修改为如下形式,将无法直接初始化
class CMyClass
{
public:
char m_szArray[50];
double m_fNum;
public:
CMyClass(){} //这个构造函数将导致无法直接初始化,编译器报错!
};
错误信息:non-aggregates cannot be initialized with initializer list