第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

允許刪除嗎?

允許刪除嗎?

C++
猛跑小豬 2019-06-25 17:04:50
允許刪除嗎?是否允許delete this;如果DELETE-語句是對該類實例執(zhí)行的最后一條語句?當然,我確信由this-指針是new造假的。我在想這樣的事情:void SomeModule::doStuff(){     // in the controller, "this" object of SomeModule is the "current module"     // now, if I want to switch over to a new Module, eg:     controller->setWorkingModule(new OtherModule());     // since the new "OtherModule" object will take the lead,      // I want to get rid of this "SomeModule" object:     delete this;}我能做這個嗎?
查看完整描述

3 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

是,delete this;定義了結果,只要(正如您已經注意到的)您確保對象被動態(tài)分配,并且(當然)在對象被銷毀后永遠不會嘗試使用該對象。多年來,人們一直在問許多關于標準具體內容的問題。delete this;,而不是刪除其他指針。答案很簡短,很簡單:它什么也沒說。它只是說delete操作數必須是一個表達式,該表達式指定指向對象或對象數組的指針。delete(§[除刪除])沒有提到delete this;特別是。關于毀滅的那一節(jié)確實提到delete this在一個地方(§[class.dtor]/13):

在虛擬析構函數(包括隱式定義(15.8)的定義點上,非數組解分配函數被確定為對于表達式刪除,它出現在析構函數類的非虛擬析構函數中(參見8.3.5)。

這傾向于支持標準考慮的觀點delete this;如果它是無效的,那么它的類型就沒有意義。這是標準提到的唯一地方delete this;據我所知。

總之,有些人認為delete this一次卑鄙的攻擊,并告訴任何愿意傾聽的人,這件事應該避免。一個常見的問題是很難確保類的對象只被動態(tài)地分配。其他人認為它是一個完全合理的成語,并一直使用它。就我個人而言,我處于中間位置:我很少使用它,但當它似乎是合適的工作工具時,不要猶豫。

使用這一技術的主要時間是對象,它的生命幾乎完全是自己的。JamesKanze引用的一個例子是他為一家電話公司工作的計費/跟蹤系統(tǒng)。當你開始打電話時,一些東西會注意到這一點,并創(chuàng)建一個phone_call對象。從那時起,phone_call對象處理電話通話的詳細信息(當您撥打電話時進行連接,在數據庫中添加一個條目以表示呼叫何時開始,如果您進行電話會議,則可能會連接更多的人,等等)。當電話中的最后一個人掛斷時,phone_call對象完成其最后的簿記操作(例如,在數據庫中添加一個條目以說明何時掛起,以便它們可以計算調用的時間長短),然后破壞自身。的生命周期phone_call對象基于第一個人何時開始調用,以及最后一個人何時離開調用-從系統(tǒng)其他部分的角度來看,它基本上完全是任意的,所以不能將其綁定到代碼中的任何詞法作用域,或與該順序相關的任何內容。

對于那些關心這種編碼有多可靠的人來說:如果你打電話到歐洲的任何地方,或者通過歐洲的任何地方,很有可能(至少是部分地)通過這樣做的代碼來處理它。


查看完整回答
反對 回復 2019-06-25
  • 3 回答
  • 0 關注
  • 397 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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