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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ 继承与多态

發布時間:2025/3/12 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 继承与多态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++ 繼承與多態


一、繼承

1、繼承方式:public,protected,private

public繼承:父類的 public、protected保持不變,private 不可見
protected繼承:父類的 public 變為protected、protected保持不變、private 不可見
private繼承:父類的 public、protected 變為private,private 不可見

2、子類創建與刪除

實例化子類:構造函數調用順序為先父類后子類
刪除子類對象:析構函數調用順序為先子類后父類

3、覆蓋

父類和子類函數名相同,不管返回值和參數是否相同。
父類中的同名函數仍然存在,子類中通過Father::fun()訪問父類的同名函數

#include <iostream> using namespace std;# 父類 class Father { public:void fun(){cout << "Father" << endl;} };# 子類 class Son: public Father { public:void fun(){cout << "Son" << endl;} };

二、多態:父類指針調用子類方法

1、虛函數(重寫)

父類和子類的函數/方法名、返回類型和參數表都要一樣
構造函數不能是虛函數

#include <iostream> using namespace std;# 父類 class Father { public:virtual void fun(){cout << "Father" << endl;} };# 子類 class Son: public Father { public:# 子類的 virtual 可寫可不寫virtual void fun(){cout << "Son" << endl;} };

2、虛析構函數

正常情況下刪除父類對象時不會調用子類的虛構函數,虛析構函數可以解決。

# 父類中 virtual ~Father(){ cout << "delete father" << endl;} # 子類中 ~Son(){ cout << "delete son" << endl;}

3、純虛函數(抽象類、接口類)

包含純虛函數的類不能實例化。純虛函數在父類中不用定義,在需要實例化的子列中需要定義

#include <iostream> using namespace std;# 抽象類 class Father { public:# 純虛函數virtual void fun() = 0; };# 子類 class Son: public Father { public:virtual void fun(){cout << "Son" << endl;} };

4、虛繼承

菱形繼承:B、C 繼承自 A 時B、C各有一份A的類屬性,D繼承與B、C時,D會同時繼承 B、C 中的 A 的類屬性從而發生沖突。

虛繼承可以解決多繼承訪問不明確,只要在中間層虛繼承就行,相當于最父類的只有一份類屬性,有點類似于靜態成員

class B: virtual public A{};class C: virtual public A{};

總結

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

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