亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

對象成員指針能不能從棧上實體化,

視頻中都是指導從堆上實體化,如對象成員指針在堆上實體化對象成員,main函數中在堆上實體化Line 類。

那么有沒有什么操作 比如在Line 中的構造函數中把對象成員指針在 棧上 實體化呢?


正在回答

3 回答

Node *p;

Node m(3);

*p = m(3); 賦值無法通過

p = &m(3); 賦值可以通過

?這是為什么

Node 是類

上面搞錯了

0 回復 有任何疑惑可以回復我~
#1

qq_慕虎1144658

m(3)意思是把3傳入Node類的帶參構造函數里面,這不是一個值,你怎么可能拿來賦值?要么你那個Node類 例如Node(int a){b=a;}(b是你類里面定義的一個變量) m(3)就相當于你把 a=3傳進去了 你想訪問你可以寫個get函數把b return出來,在用p->get() 你這個完全就是在瞎搞嘛 要是你想這么用也可以 看圖
2019-03-01 回復 有任何疑惑可以回復我~
#2

qq_慕虎1144658

#include <stdio.h> #include <string> #include <stdlib.h> int main(){ int *p=NULL; int m(3); p=&m; *p=m; }
2019-03-01 回復 有任何疑惑可以回復我~

Node *p;

Node m(3);

*p = m(3); 賦值無法通過

p = &m(3); 賦值無法通過

?這是為什么

Node 是類

0 回復 有任何疑惑可以回復我~
#1

慕斯6434274 提問者

卡在這里想了一天了
2018-10-26 回復 有任何疑惑可以回復我~

只有使用new的指針,所指對象是在堆上。不使用new分配內存的都是在棧上。

你要非在棧上實體化,先創建對象成員,然后用指針指向成員地址就行了。


注意這樣一個問題:Node?*p;和?Node?*p?=?new?Node;的區別是什么?

都是node類型的指針,前者也就是node *p程序結束后會自動刪除(棧上),后者new node不會自動刪除,會用到delete函數刪除(堆上)。

不自動刪除的話,可以自己控制,方便在其他地方調用,在合適的時間再手動刪除。


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之封裝篇(下)
  • 參與學習       70902    人
  • 解答問題       534    個

封裝--面向對象三大特征之一,通過案例讓C++所學知識融會貫通

進入課程

對象成員指針能不能從棧上實體化,

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號