C 中純虛函式與虛函式的作用和區別

2022-05-02 18:51:09 字數 944 閱讀 2998

今天課堂上使用到了c++中的純虛函式相關知識,而我卻無恥的只有乙個很模糊的概念,並不是十分的掌握,於是我仔細的複習了這一塊。

首先純虛函式是一種特殊的虛函式,在許多情況下,在基類中不能對虛函式給出有意義的實現,而把它宣告為純虛函式,它的實現留給該基類的派生類去做。這就是純虛函式的作用。通俗來說,使用純虛函式的類我們成為抽象類,該類不提供方法只提供介面,也可以很形象的理解為就是乙個api。

純虛函式的宣告方法:vitual void a()=0;

虛函式則是為了實現多型,(多型性是允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。)

下面來看**實現:首先定義兩個類,a和b,b類是a類的子類,首先不使用虛函式。我們可以看到當我們使用a類定義的兩個指標p1和p2分別指向a類和b類,按道理我們的輸出應該是實現各自的print函式,但是結果卻是都是實現的a類中的print函式。

然後我們在將父類中的函式設定為虛函式(子類可直接延續父類相應的成為虛函式),我們可以看到分別實現了兩個print函式,這就是典型的多型實現。也就是虛函式的作用。

C 類中 虛函式與純虛函式的區別和作用

在c 的面試題中經常會被問到虛函式與純虛函式的區別和作用,在此做個總結。主要是借鑑了這篇部落格 虛函式與純虛函式在宣告的形式上的區別 virtual void funtion1 0 純虛函式 virtual void funtion2 虛函式12 定義乙個函式為虛函式,不代表函式為不被實現的函式。定...

C 中的虛函式和純虛函式

c 中的虛函式和純虛函式用法 1 虛函式和純虛函式可以定義在同乙個類 class 中,含有純虛函式的類被稱為抽象類 abstract class 而只含有虛函式的類 class 不能被稱為抽象類 abstract class 2 虛函式可以被直接使用,也可以被子類 sub class 過載以後以多型...

C 虛函式與純虛函式

純虛函式定義如下 virtual functionname parameter 0 類的乙個成員定位虛函式的實際意義在於讓c 知道該函式並無意義,它的作用只是為了讓派生類進行函式過載保留位置。純虛函式的定義方法就是在類的虛函式後面加上 0 標記,類中一旦出現了純虛函式的定義,那麼此類為抽象類。例項 ...