C++ 构造和析构调用顺序——强化训练(一)

​​#include<iostream>
using namespace std;

class ABCD
{
public:
	ABCD()
	{
	
	}
	ABCD(int a, int b, int c)
	{
		m_a = a;
		m_b = b;
		m_c = c;
		cout <<"ABCD类有参构造" ;
		cout <<"a="<<m_a<<"b="<<m_b<<"c="<<m_c << endl;
	}
	
	~ABCD()
	{
		cout <<"我是ABCD类的析构" << endl;
	}
	int getA()
	{
		return m_a;
	}
private:
	int m_a;
	int m_b;
	int m_c;
};
class Mye
{
public:
	Mye() :abcd1(1, 2, 3), abcd2(4, 5, 6), m(7)
	{
		cout << "我是MYe的构造函数"<< endl;
	}
	Mye(const Mye& obj) :abcd1(8, 9, 10),abcd2(11, 12, 13), m(8)
	{
		cout << "我是mye的拷贝构造函数"<< endl;
	}
	~Mye()
	{
		cout <<"我是Mye的析构函数" << endl;
	}
	
public:
	ABCD abcd1;
    ABCD abcd2;
	const int m;

};
int dothing(Mye mye)
{
	cout <<"dothing() mye.abcd1,getA()"<<mye.abcd1.getA() << endl;
	return 0;
}
int run2()
{
	Mye mye;//先调用ABCD类的有参构造函数,再调用mye类的有参构造函数
	dothing(mye);//先调用Mye类的有参构造函数,再调用mye类的拷贝构造函数
	return 0;//析构调用顺序与构造调用顺序相反
}
int main()
{
	run2();
	system("pause");

}

 结果

猜你喜欢

转载自blog.csdn.net/error0_dameng/article/details/82052199