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

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

類成員函數模板可以是虛擬的嗎?

類成員函數模板可以是虛擬的嗎?

C++
慕沐林林 2019-06-24 15:46:52
類成員函數模板可以是虛擬的嗎?我聽說C+類成員函數模板不能是虛擬的。這是真的嗎?如果它們可以是虛擬的,那么在一個場景中使用這樣一個函數的例子是什么呢?
查看完整描述

3 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

模板都是關于編譯器生成代碼的編譯時..虛擬函數都是關于運行時系統,確定要調用哪個函數。運行時間.

一旦運行時系統計算出它需要調用一個經過模板化的虛擬函數,編譯就全部完成,編譯器就不能再生成適當的實例了。因此,您不能有虛擬成員函數模板。

然而,有一些強大而有趣的技術來自于將多態性和模板結合在一起,特別是所謂的模板。類型擦除.


查看完整回答
反對 回復 2019-06-24
?
慕勒3428872

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

C+現在不允許虛擬模板成員函數。最可能的原因是實現它的復雜性。Rajendra給出了為什么現在不能這樣做的很好的理由,但是如果對標準進行合理的修改,這是可能的。特別是,如果考慮虛擬函數調用的位置,計算模板函數的實例化數量和構建vtable似乎很困難。標準人們現在還有很多其他的事情要做,C+1x也是編譯器編寫人員的大量工作。

何時需要模板成員函數?有一次,我遇到這樣的情況,我試圖用純虛擬基類重構層次結構。這是一種執行不同戰略的糟糕風格。我想將其中一個虛擬函數的參數更改為數字類型,而不是重載成員函數,并覆蓋所有子類中的每個重載,我嘗試使用虛擬模板函數(并且必須發現它們不存在)。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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