[英]c++ reference to pointer
我有以下偽代碼:
function1()//Gets called on startup
{
myclass* obj;
function2(obj);
obj->doSomething();//crashes here!
}
function2(myclass*& ret)
{
myclass* nobj = &myclass();
nobj->doSomething();//Does not crash
ret = &nobj;
}
看起來即使我設置ret指向nobj,當我嘗試操作obj(應該指向nobj,因為ret是對obj的引用)時,我的程序崩潰了! 顯然,我做錯了什么,有誰知道它是什么?
您正在通過執行&myclass()
臨時的地址,這是禁止的,因為臨時在表達式的末尾被銷毀,並且您的編譯器不應該允許它。
雖然您的編譯器已經在該區域中不一致,但您將繼續使用被破壞的對象,這是未定義的行為,這也是您的代碼崩潰的原因。
另外,我不確定你是如何將指向myclass
( &nobj
)的指針分配給指向myclass
( ret
)的指針。 它不應該編譯。
嘗試:
myclass *obj = new myclass();
obj->doSomething();
delete obj;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.