參考範例p10-6-3 替字串類別加入[ ] 運算子多載函式

destructor內執行釋放動態體記憶指標,並於destructor內輸出動態記憶體指標地址與內容,結果則地址依舊存在(指標依舊指向該地址),但內容則刪除.因此執行釋放動態體記憶指標的實質意義為指標依舊指向原來的記憶體地址,但內容刪除.

在class的成員函式內建立物件時會呼叫constructor,且當成員函式執行結束後也一併會執行destructor,而當成員函式內建立物件的成員變數為動態記憶體指標時,destructor函式內執行的"delete []動態指標成員變數",會將動態指標成員變數裡的資料內容刪除,使得在成員函式內所建立物件的成員變數內容消失.因此若成員函式以參照傳回物件,且要在main主函式中執行要顯示成員函式中的動態指標成員變數資料內容時,將無法顯示,因已被constructor內執行"delete []動態指標成員變數"所刪除.

若不在成員函式內建立物件,則成員函式在執行結束後,並不會執行destructor,同時也不會執行constructor內的"delete []動態指標成員變數"

 

arrow
arrow
    全站熱搜

    minsin 發表在 痞客邦 留言(0) 人氣()