const常量一般来说是在初始化的时候赋值,但是在类里面必须写在初始化列表中,如果写在构造函数内部,相当于给常量赋值,错误!!!!
class A{
public:
A(int a){
cout<<"A()...."<<a<<endl;
m_a = a;
}
void printA(){
cout<<"m_a = "<<m_a<<endl;
}
~A(){
cout<<"~A()..."<<endl;
}
private:
int m_a;
};
class B
{
public:
B(A &a1,A &a2,int b,int m):m_a1(a1),m_a2(a2),m_m(m) //构造对象成员的顺序与构造函数的初始化列表无关
//和构造成员的定义顺序有关
{
m_b = b;
}
~B(){
cout<<"~B()...."<<endl;
}
void printB(){
cout<<"m_b = "<<m_b<<endl;
m_a1.printA();
m_a2.printA();
}
1:
private:
A m_a1; //先初始化m_a1
A m_a2; //后初始化m_a2
int m_b;
const int m_m;
2:
private:
A m_a2; //先初始化m_a2
A m_a1; //后初始化m_a1
int m_b;
};
int main(void){
A a1(10),a2(100);
B b(a1,a2,10000);
b.printB();
}