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

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

在C ++中通過指針捕獲異常

在C ++中通過指針捕獲異常

C++
哈士奇WWW 2019-12-12 14:10:08
我發(fā)現(xiàn)有三種捕獲異常的方法,有什么區(qū)別?1)抓住價值;2)通過引用捕獲;3)被指針抓??;我只知道按值捕獲將調(diào)用該對象的兩個副本,按引用捕獲將調(diào)用一個對象。那么指針捕獲又如何呢?何時使用指針捕獲?除了拋出一個對象,我還能拋出一個指向這樣的對象的指針嗎?class A {}void f() {  A *p = new A();        throw p;}
查看完整描述

3 回答

?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個贊

推薦的方法是按值拋出并按引用捕獲。

您的示例代碼將拋出一個指針,這是一個壞主意,因?yàn)槟鷮⒉坏貌辉诓东@站點(diǎn)上管理內(nèi)存。

如果您確實(shí)覺得應(yīng)該拋出一個指針,請使用諸如的智能指針shared_ptr。

無論如何,Herb Sutter和Alexei Alexandrescu在我解釋的C ++編碼標(biāo)準(zhǔn)書中對此做了很好的解釋。


查看完整回答
反對 回復(fù) 2019-12-13
?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個贊

捕獲遵循正常的分配兼容性規(guī)則,也就是說,如果您拋出一個值,則可以將其捕獲為值或引用,但不能將其捕獲為指針。如果拋出指針,則只能將其作為指針(或?qū)χ羔樀囊?..)來捕獲。

但是拋出指針并沒有任何意義,只會引起內(nèi)存管理的麻煩。因此,通常應(yīng)遵循按值拋出的規(guī)則,按引用捕獲的規(guī)則,如Gregory所述。


查看完整回答
反對 回復(fù) 2019-12-13
  • 3 回答
  • 0 關(guān)注
  • 453 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號