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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP