簡體   English   中英

c ++對指針的引用

[英]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 )的指針分配給指向myclassret )的指針。 它不應該編譯。

嘗試:

myclass *obj = new myclass();
obj->doSomething();
delete obj;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM