以下的工作,總是?在C++中,如果我用一個釋放析構函數〜MyClass引用一個對象,那麼引用超出範圍調用析構函數?
class MyCLass {
int *pInt;
public:
MyCLass() {
pInt = new int;
*pInt = 42;
}
~MyCLass() {
delete pInt;
printf("Goodbye cruel world!");
}
void func1() {
printf("Hello World %d", *pInt);
}
};
MyCLass foo;
{
MyClass &bar = foo;
//Do stuff
}
foo.func1();
我擔心它的任務精確模擬原始對象bar
將導致析構函數的調用,因爲它超出範圍。
'MyCLass foo = new MyClass();'< - 除非MyCLass具有帶'MyClass'指針的構造函數,否則這是行不通的。 –
語法錯誤,很好發現,謝謝cli_hit,原則保持不變。 – John
構造函數的作用完全與問題無關。您可能會問,引用的生命週期結束是否導致裁判員的析構函數調用。當然,這是錯誤的。 – pmr