class Date
{
public:
Date(int year = 1, int month = 1, int day = 1)
{
_year = year;
_month = month;
_day = day;
}
private:
int _year;
int _month;
int _day;
};
class A
{
public:
A(int a)
:_a(a)
{}
private:
int _a;
};
class B
{
public:
B(int d = 1)
:_a1(1)// 没有默认构造函数
,_b(d)// 引用成员变量
,_b2(2)// const成员
{}
private:
A _a1;
int& _b;
const int _b2;
};
除此以外,初始化列表和函数体可以混用 ,如上Stack类中情形。
成员变量在类中的声明次序 ,就是成员变量在初始化列表中初始化顺序,与其在初始化列表中出现先后无关。
观察以下情形:
cpp复制代码
class A
{
public:
A(int a)
:_a1(a)
,_a2(_a1)
{}
private:
int _a2;
int _a1;
};
int main()
{
A a(1);
return 0;
}