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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

派生類中函數(shù)的C+“虛擬”關(guān)鍵字。有必要嗎?

派生類中函數(shù)的C+“虛擬”關(guān)鍵字。有必要嗎?

C++
冉冉說 2019-07-17 10:06:03
派生類中函數(shù)的C+“虛擬”關(guān)鍵字。有必要嗎?用下面的結(jié)構(gòu)定義.。struct A {     virtual void hello() = 0;};方法1:struct B : public A {     virtual void hello() { ... }};方法2:struct B : public A {     void hello() { ... }};這兩種重寫hello函數(shù)的方法有什么區(qū)別嗎?
查看完整描述

3 回答

?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

他們完全一樣。除了第一種方法需要更多的輸入,而且可能更清晰之外,它們之間沒有什么區(qū)別。


查看完整回答
反對(duì) 回復(fù) 2019-07-17
?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

函數(shù)的“虛擬性”是隱式傳播的,但是,如果virtual關(guān)鍵字沒有顯式使用,所以您可能希望使用它,如果只是為了使編譯器保持安靜。

從純粹的文體角度來看,包括virtual關(guān)鍵字清楚地向用戶‘宣傳’這個(gè)功能是虛擬的。這對(duì)任何進(jìn)一步細(xì)分B級(jí)的人來說都是很重要的,而不必檢查A的定義。對(duì)于深度類層次結(jié)構(gòu)而言,這一點(diǎn)尤為重要。


查看完整回答
反對(duì) 回復(fù) 2019-07-17
?
catspeake

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊

不,virtual派生類的虛擬函數(shù)重寫不需要關(guān)鍵字。但值得一提的是一個(gè)相關(guān)的缺陷:無法覆蓋虛擬函數(shù)。

這個(gè)未能覆蓋如果您打算覆蓋派生類中的虛擬函數(shù),但在簽名中出錯(cuò),使其聲明一個(gè)新的和不同的虛擬函數(shù),則發(fā)生。此函數(shù)可能是過載基類函數(shù),或者它的名稱可能不同。是否使用virtual關(guān)鍵字在派生類函數(shù)聲明中,編譯器將無法判斷您打算重寫基類中的函數(shù)。

然而,這個(gè)陷阱卻被C+11解決了。顯式覆蓋語言特性,它允許源代碼明確指定成員函數(shù)用于覆蓋基類函數(shù):

struct Base {
    virtual void some_func(float);};struct Derived : Base {
    virtual void some_func(int) override; // ill-formed - doesn't override a base class method};

編譯器將發(fā)出編譯時(shí)錯(cuò)誤,編程錯(cuò)誤將立即明顯(也許派生中的函數(shù)應(yīng)該使用float作為論據(jù))。

請(qǐng)參閱WP:C+11.


查看完整回答
反對(duì) 回復(fù) 2019-07-17
  • 3 回答
  • 0 關(guān)注
  • 435 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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