C++ 中的虛擬函式和純虛擬函式之間的區別
下表展示了虛擬函式和純虛擬函式之間的區別
虛擬函式 | 純虛擬函式 |
---|---|
虛擬函式在其類中具有定義。 | 純虛擬函式沒有定義。 |
宣告:virtual funct_name(parameter_list) {. . . . .}; | 宣告:virtual funct_name(parameter_list)=0; |
它沒有派生類的概念。 | 如果一個類至少包含一個純虛擬函式,那麼它被宣告為抽象函式。 |
如果需要,則基類可以覆蓋虛擬函式。 | 在純虛擬函式的情況下,派生類一定要覆蓋該純虛擬函式。 |
virtual function
示例程式碼
#include <iostream> using namespace std; class B { public: virtual void s() //virtual function { cout<<" In Base \n"; } }; class D: public B { public: void s() { cout<<"In Derived \n"; } }; int main(void) { D d; // An object of class D B *b= &d;// A pointer of type B* pointing to d b->s();// prints"D::s() called" return 0; }
輸出
In Derived
pure virtual function
示例程式碼
#include<iostream> using namespace std; class B { public: virtual void s() = 0; // Pure Virtual Function }; class D:public B { public: void s() { cout << " Virtual Function in Derived class\n"; } }; int main() { B *b; D dobj; // An object of class D b = &dobj;// A pointer of type B* pointing to dobj b->s();// prints"D::s() called" }
輸出
Virtual Function in Derived class
廣告