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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用new與without實例化對象之間的區別是什么

使用new與without實例化對象之間的區別是什么

C++
慕無忌1623718 2019-09-19 15:16:51
在C ++中,除了動態內存分配之外,以下兩行代碼之間是否存在功能差異:Time t (12, 0, 0); //t is a Time objectTime* t = new Time(12, 0, 0);//t is a pointer to a dynamically allocated Time object我當然假設定義了一個Time(int,int,int)ctor。我也意識到在第二種情況下,t將需要刪除,因為它是在堆上分配的。還有其他區別嗎?
查看完整描述

3 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

這條線:


Time t (12, 0, 0);

... Time在本地范圍內分配一個類型的變量,通常在堆棧上,當它的作用域結束時將被銷毀。


相比之下:


Time* t = new Time(12, 0, 0);

...通過調用::operator new()或分配一塊內存Time::operator new(),然后Time::Time()使用thisset 調用該內存塊中的一個地址(并且還作為結果返回new),然后存儲在該內存塊中t。如你所知,這是一般的堆(默認)完成,并要求您delete在以后的節目,而指針t則一般存儲在堆棧上。


查看完整回答
反對 回復 2019-09-19
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

另一個明顯的區別是訪問t的變量和方法。


Time t (12, 0, 0);

t.GetTime();


Time* t = new Time(12, 0, 0);

t->GetTime();


查看完整回答
反對 回復 2019-09-19
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

我想你已經明白了所有的不同之處。假設你很清楚通過指針和變量訪問t成員的語法差異(好吧,指針也是一個變量,但我想你明白我的意思)。并假設您在將t傳遞給函數時知道按值調用和按引用調用的區別。而且我認為你也明白如果你將t分配給另一個變量并通過其他變量進行更改會發生什么。結果將根據t是否為指針而不同。


查看完整回答
反對 回復 2019-09-19
  • 3 回答
  • 0 關注
  • 487 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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