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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别

發布時間:2025/6/15 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++ 在繼承中虛函數、純虛函數、普通函數,三者的區別

1.虛函數(impure virtual)

  C++的虛函數主要作用是“運行時多態”,父類中提供虛函數的實現,為子類提供默認的函數實現

  子類可以重寫父類的虛函數實現子類的特殊化。

  如下就是一個父類中的虛函數:

class A { public:virtual void out2(string s){cout<<"A(out2):"<<s<<endl;} };

2.純虛函數(pure virtual)

  C++中包含純虛函數的類,被稱為是“抽象類”。抽象類不能使用new出對象,只有實現了這個純虛函數的子類才能new出對象。

  C++中的純虛函數更像是“只提供申明,沒有實現”,是對子類的約束,是“接口繼承”。

  C++中的純虛函數也是一種“運行時多態”。

  如下面的類包含純虛函數,就是“抽象類”:

class A { public:virtual void out1(string s)=0;virtual void out2(string s){cout<<"A(out2):"<<s<<endl;} };

3.普通函數(no-virtual)

  普通函數是靜態編譯的,沒有運行時多態,只會根據指針或引用的“字面值”類對象,調用自己的普通函數

  普通函數是父類為子類提供的“強制實現”。

  因此,在繼承關系中,子類不應該重寫父類的普通函數,因為函數的調用至于類對象的字面值有關。

4.程序綜合實例

#include <iostream> using namespace std;class A { public:virtual void out1()=0; ///由子類實現virtual ~A(){};virtual void out2() ///默認實現 {cout<<"A(out2)"<<endl;}void out3() ///強制實現 {cout<<"A(out3)"<<endl;} };class B:public A { public:virtual ~B(){};void out1(){cout<<"B(out1)"<<endl;}void out2(){cout<<"B(out2)"<<endl;}void out3(){cout<<"B(out3)"<<endl;} };int main() {A *ab=new B;ab->out1();ab->out2();ab->out3();cout<<"************************"<<endl;B *bb=new B;bb->out1();bb->out2();bb->out3();delete ab;delete bb;return 0; }

執行結果:

總結

以上是生活随笔為你收集整理的C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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