課程
/后端開發
/C++
/C++遠征之封裝篇(下)
視頻中都是指導從堆上實體化,如對象成員指針在堆上實體化對象成員,main函數中在堆上實體化Line 類。
那么有沒有什么操作 比如在Line 中的構造函數中把對象成員指針在 棧上 實體化呢?
2018-10-26
源自:C++遠征之封裝篇(下) 4-5
正在回答
Node *p;
Node m(3);
*p = m(3); 賦值無法通過
p = &m(3); 賦值可以通過
?這是為什么
Node 是類
上面搞錯了
qq_慕虎1144658
p = &m(3); 賦值無法通過
慕斯6434274 提問者
只有使用new的指針,所指對象是在堆上。不使用new分配內存的都是在棧上。
你要非在棧上實體化,先創建對象成員,然后用指針指向成員地址就行了。
注意這樣一個問題:Node?*p;和?Node?*p?=?new?Node;的區別是什么?
都是node類型的指針,前者也就是node *p程序結束后會自動刪除(棧上),后者new node不會自動刪除,會用到delete函數刪除(堆上)。
不自動刪除的話,可以自己控制,方便在其他地方調用,在合適的時間再手動刪除。
舉報
封裝--面向對象三大特征之一,通過案例讓C++所學知識融會貫通
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-10-26
Node *p;
Node m(3);
*p = m(3); 賦值無法通過
p = &m(3); 賦值可以通過
?這是為什么
Node 是類
上面搞錯了
2018-10-26
Node *p;
Node m(3);
*p = m(3); 賦值無法通過
p = &m(3); 賦值無法通過
?這是為什么
Node 是類
2018-10-26
只有使用new的指針,所指對象是在堆上。不使用new分配內存的都是在棧上。
你要非在棧上實體化,先創建對象成員,然后用指針指向成員地址就行了。
注意這樣一個問題:Node?*p;和?Node?*p?=?new?Node;的區別是什么?
都是node類型的指針,前者也就是node *p程序結束后會自動刪除(棧上),后者new node不會自動刪除,會用到delete函數刪除(堆上)。
不自動刪除的話,可以自己控制,方便在其他地方調用,在合適的時間再手動刪除。