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

上次更新: 30-7-2019

6000+ 瀏覽量

開啟你的 職業

透過完成課程獲得認證

開始
廣告