c++ 构造函数的初始化列表

#include<iostream>
using namespace std;
class A{
    
    
public:
	A(int a){
    
    
		cout << "A()..." << endl;
		m_a = a;
	}
	~A(){
    
    
		cout << "~A()..." << endl;
	}
	void printA(){
    
    
		cout << "a = " << m_a << endl;
	}
private:
	int m_a;
};
class ABC{
    
    
public:
	ABC(int a,int b,int c){
    
    
		cout << "ABC(int a,int b,int c)" << endl;
		m_a = a;
		m_b = b;
		m_c = c;
	}
	~ABC(){
    
    
		cout << "~ABC()" << endl;
	}
private:
	int m_a;
	int m_b;
	int m_c;
};
class ABCD{
    
    
public:
//	ABCD(int a,int b,int c,int d) : m_abc(a,b,c){
    
    
//		m_d = d;
//	}
	ABCD(int a,int b,int c,int d) : m_abc(a,b,c),m_d(d){
    
    
		
	}
	ABCD1(ABC&abc,int d) : m_abc(abc){
    
    
		m_d = d;
	}
private:
	int m_d;
	ABC m_abc;
};
class B{
    
    
public:
	
	//构造对象成员的顺序跟初始化列表的顺序无关 
	//而是跟成员对象的定义顺序有关 
	B(A &a1,A &a2,int b) : m_a1(a1),m_a2(a2)
	{
    
    
		cout << "B(A &a1,A &a2,int b)" << endl;
		m_b = b;
	}
	~B(){
    
    
		cout << "~B()..." << endl;
	}
	void printB(){
    
    
		cout << "b = " << m_b << endl;
		m_a1.printA();
		m_a2.printA();
	}
private:
	int m_b;
	A m_a1;
	A m_a2;
};
int main(){
    
    
//	A a1(10),a2(100);
//	B b(a1,a2,1000);
//	b.printB();
    ABC abc(10,20,30);
    ABCD(1,2,3,4);
    ABCD abcd1(abc,30);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_46381608/article/details/108555050