C++ 虚函数成员和纯虚函数
生活随笔
收集整理的這篇文章主要介紹了
C++ 虚函数成员和纯虚函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一般虛函數成員的聲明語法是:
virtual 函數類型 函數名(形參表);在類的定義使用virtual關鍵字來限定成員函數,虛函數聲明只能出現在類定義中的函數原型聲明中,而不能在成員函數實現的時候出現。
#include <iostream>using namespace std;class Base1{public:virtual void display() const; // 虛函數 };void Base1::display() const{cout << "Base1::display()" << endl; }class Base2 : public Base1{ // 定義派生類 public:void display() const; // 覆蓋基類的虛函數 }; void Base2::display() const{cout << "Base2::display()" << endl; }class Derived: public Base2{ // 定義派生類 public:void display() const; // 覆蓋基類的虛函數 };void Derived::display() const{ cout << "Derived::display()" << endl; }void fun(Base1 *ptr){ptr -> display(); } int main(){Base1 *base1 = new Base1();Base2 *base2 = new Base2();Derived *derived = new Derived();fun(base1);fun(base2);fun(derived);delete derived;delete base2;delete base1;return 0;}運行過程中的多態需要滿足3個條件,第一是類之間滿足賦值兼容 規則,第二是要聲明虛函數,第三是要由成員函數來調用或者是通過指針、引用來訪問虛函數。如果是使用對象名來訪問虛函數,則綁定在編譯過程中就可以進行(靜態綁定),而無須在運行過程中進行。
帶有純虛函數的類是抽象類,抽象類不能實例化,即不能定義一個抽象類的對象,但是可以定義一個抽象類的指針和引用。通過指針或引用,就可以指向并訪問派生類的對象,進而訪問派生類的成員,這種訪問是具有多態特征的。
#include <iostream>using namespace std;class Base1{public:virtual void display() const = 0; // 純虛函數 };class Base2 : public Base1{ // 定義派生類 public:void display() const; // 覆蓋基類的虛函數 }; void Base2::display() const{cout << "Base2::display()" << endl; }class Derived: public Base2{ // 定義派生類 public:void display() const; // 覆蓋基類的虛函數 };void Derived::display() const{ cout << "Derived::display()" << endl; }void fun(Base1 *ptr){ptr -> display(); } int main(){Base2 *base2 = new Base2();Derived *derived = new Derived();fun(base2);fun(derived);delete derived;delete base2;return 0;}總結
以上是生活随笔為你收集整理的C++ 虚函数成员和纯虚函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 复数类加减法运算重载为成员函数形
- 下一篇: Java 第一个Java程序