匿名对象生命周期只有一句代码

类的成员变量存放在堆或栈上,而成员函数存放在代码段上,所有的对象共享成员函数

像Test(1,2);这种为匿名对象,特别之处是:这一行代码结束时,就自动调用析构函数;而Test t2(3,4);就是从代码开始创建一个对象,直到函数结束才被释放。

Test t3(6,4);    <<==== >>  Test t3 =Test(6,4);

#include <iostream>

using namespace std;

class Test
{
private:
	int m_a;
	int m_b;
public:
	Test(int a);
	Test(int a, int b);
	Test(const Test &t);    //拷贝构造函数
	~Test();                //析构函数
	void print();
};

Test::Test(int a)
{
	cout << "Test constructor1!" << endl;
	m_a = a;
	Test(1,2);               //匿名构造函数   生命值在这一句话后结束
}

Test::Test(int a, int b)
{
	cout << "Test constructor2!" << endl;
	m_a = a;
	m_b = b;
}

Test::Test(const Test &t)
{
	cout << "Copy constructor!" << endl;
}

Test::~Test()
{
	cout << "Test destruct!" << endl;
}

void Test::print()
{
	cout << "m_a = " << m_a << endl;
	cout << "m_b = " << m_b << endl;
}

int main()
{
	Test(1,2);
	cout << "***********" << endl;
	Test t1(2,3);
	Test t2(3,4);
	Test t3=Test(4,5);
	
	cout << "***********" << endl;
	Test t4(3);
	t4.print();
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zys15195875600/article/details/81221208