class Init
{
public:
Init(): a(0) []
Init(int d): a(d) {}
private:
int a;
const static int b = 0;
int c = 1; // member, cannot pass build
static int d = 0; // member, cannot pass build
static const double e = 1.3; // not int or enum type, cannot pass build
stati const char* const f = "e"; // not int or enum type, cannot pass build
}
#include <iostream>
using namespace std;
class A
{
public:
int a = 1;
A(int a_) :a(2) { a = 3; }
};
int main()
{
A a;
cout << "a.a=" << a.a << endl;
return 0;
}
// a.a=3
class Group {
public:
Group() {}
Group(int a): data(a) {}
Group(Mem m): mem(m) {}
Group(int a, Mem m, string n): data(a), mem(m), name(n) {}
private:
int data = 1;
Mem mem{0};
string name{"Group"};
};
2. 列表初始化的使用场景
前面说过了三个场景,这里赘述一下
const 成员变量只能用成员初始化列表来完成初始化,而不能在构造函数内赋值
初始化的数据成员是对象
需要初始化引用成员数据
但是,需要注意列表初始化的顺序,不过 IDE 会提示你的 3. 构造函数初始化的使用场景
第一个就是拷贝和赋值构造函数里(不然怎么叫赋值构造函数呢)
第二个就是比较无聊的情况了,比如你想把几个成员函数都初始化成一个值,请看下面例子
class Group {
public:
Group() {data1 = data2 = data3 = 0;}
private:
int data1;
int data2;
int data3;
};