日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Effective C++ ------- virtual

發布時間:2023/12/15 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Effective C++ ------- virtual 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

public繼承意味著is-a(是一種),所以對base? class為真的任何事情

一定也對其derived class為真。

?

1?? pure virtual 函數必須被任何繼承了他們的子類實現,通常它們在抽象

類中沒有定義,結合兩者,我們發現,聲明一個純虛函數的目的是為了

讓派生類只繼承函數接口。

?

2?? 聲明非純impure virtual函數的目的,是讓派生類繼承其接口以及一份默認

實現。

(此處飛機的A,B,C例子,C可能不想用默認行為,但是缺省就用了,

對此可以利用純虛函數+實現,子類里如果想用默認行為,則顯示調用

base::purevirtual_func() )

?

3? 聲明非虛函數的目的是讓派生類繼承函數的接口和一份強制性實現。

?

?

class定義內出現函數實現,則暗自成了inline。

?

替代虛函數:

NVI手法(non virtual interface,基類里聲明一個non virtual函數,但是它

調用private的virtual函數,各子類實現自己的virtual函數。也叫template method

設計模式, 這個non virtual函數可以控制調用virtual函數之前的準備工作,加鎖

之類的,也可以做virtual函數調用后的釋放、清理工作)

?

?

運用函數指針給每個對象(對象持有函數指針成員),其優點是每個對象的處理

函數都可以不同,也可以在運行期改變計算函數(setCalcFunc),其缺點是會

降低類的封裝性(讀取類的成員變量)

?

?

絕不要重新定義繼承而來的non-virtual函數,析構函數就是一個特別的例子。

?

條款37: 絕不要重新定義一個繼承來的缺省參數值,因為缺省參數值都是

靜態綁定,而virtual函數---你唯一應該覆寫的東西---卻是動態綁定的。

?

當出現這種使用virtual遇到麻煩時,可以考慮上述的NVI等替代方案。

轉載于:https://www.cnblogs.com/lijinping/p/6069932.html

總結

以上是生活随笔為你收集整理的Effective C++ ------- virtual的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。