024構造函數中調用構造是危險的行爲

/*
	構造中調用構造是危險的行爲
*/

#if 1
class MyTest
{
public:
	MyTest(int a, int b, int c)
	{
		this->a = a;
		this->b = b;
		this->c = c;
	}

	MyTest(int a, int b)
	{
		this->a = a;
		this->b = b;

		//給c賦值
		MyTest(a, b, 100); //直接調用構造函數,產生新的匿名對象,沒人接,
		//會直接調用匿名對象的析構函數。 跟t1對象沒有半毛錢關係
	}
	~MyTest()
	{
		printf("析構函數 MyTest~:%d, %d, %d\n", a, b, c);
	}

protected:
private:
	int a;
	int b;
	int c;

public:
	int getC() const { return c; }
	void setC(int val) { c = val; }
};

void test()
{
	MyTest t1(1, 2);
	printf("-----c:%d", t1.getC()); //請問c的值是?竟然是亂碼
}

#endif

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章