/*
構造中調用構造是危險的行爲
*/
#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
024構造函數中調用構造是危險的行爲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.