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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++虚函数与纯虚函数用法与区别

發布時間:2025/3/15 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++虚函数与纯虚函数用法与区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?虛函數和純虛函數可以定義在同一個類(class)中,含有純虛函數的類被稱為抽象類(abstract?class),而只含有虛函數的類(class)不能被稱為抽象類(abstract?class)。

  

2.?虛函數可以被直接使用,也可以被子類(sub?class)重載以后以多態的形式調用,而純虛函數必須在子類(sub?class)中實現該函數才可以使用,因為純虛函數在基類(base?class)只有聲明而沒有定義。

?

3.?虛函數和純虛函數都可以在子類(sub?class)中被重載,以多態的形式被調用。

?

4.?虛函數和純虛函數通常存在于抽象基類(abstract?base?class?-ABC)之中,被繼承的子類重載,目的是提供一個統一的接口。

?

5.?虛函數的定義形式:virtual?{method?body}

  純虛函數的定義形式:virtual?{?}?=?0;

在虛函數和純虛函數的定義中不能有static標識符,原因很簡單,被static修飾的函數在編譯時候要求前期bind,然而虛函數卻是動態綁定(run-time?bind),而且被兩者修飾的函數生命周期(life?recycle)也不一樣。

?

6.?虛函數必須實現,如果不實現,編譯器將報錯,錯誤提示為:

error?LNK****:?unresolved?external?symbol?"public:?virtual?void?__thiscall
ClassName::virtualFunctionName(void)"

7.?對于虛函數來說,父類和子類都有各自的版本。由多態方式調用的時候動態綁定。

?

8.?實現了純虛函數的子類,該純虛函數在子類中就編程了虛函數,子類的子類即孫子類可以覆蓋

該虛函數,由多態方式調用的時候動態綁定。

9.?虛函數是C++中用于實現多態(polymorphism)的機制。核心理念就是通過基類訪問派生類定義的

函數
?

10.?多態性指相同對象收到不同消息或不同對象收到相同消息時產生不同的實現動作。C++支持兩種多態性:編譯時多態性,運行時多態性。
a.編譯時多態性:通過重載函數實現
b?運行時多態性:通過虛函數實現。

?

11.?如果一個類中含有純虛函數,那么任何試圖對該類進行實例化的語句都將導致錯誤的產生,因為抽象基類(ABC)是不能被直接調用的。必須被子類繼承重載以后,根據要求調用其子類的方法。

?

#include<iostream> using namespace std;class Virtualbase{public:virtual void Demon() = 0; //prue virtual functionvirtual void Base() { cout << "this is farther class" << endl; }};//sub classclass SubVirtual :public Virtualbase{public:void Demon() {cout << " this is SubVirtual!" << endl;}void Base() {cout << "this is subclass Base" << endl;}};void main(){Virtualbase* inst = new SubVirtual(); //multstate pointerinst->Demon();inst->Base();// inst = new Virtualbase();// inst->Base()system("pause");return;} }結果:1. 子類實現2. 打印基類

?

總結

以上是生活随笔為你收集整理的C++虚函数与纯虚函数用法与区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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