C++多态的概念及前提条件
生活随笔
收集整理的這篇文章主要介紹了
C++多态的概念及前提条件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在前面的所有列舉的程序中,函數的入口地址與函數名是在編譯時進行綁定的,我們稱之為編譯期綁定,而多態的功能則是將函數名動態綁定到函數入口地址,這樣的動態綁定過程稱為運行期綁定。編譯期綁定是指在程序編譯時就將函數名與函數入口地址綁定到一起,運行期綁定是指在程序運行時才將函數名與函數入口地址綁定到一起,而在運行期綁定的函數我們稱其是多態的。
#include<iostream> using namespace std;class base { public:void display(){cout<<"I'm base class!"<<endl;} };class derived: public base { public:void display(){cout<<"I'm derived class!"<<endl;}};int main() {base * p;derived test;p = &test;p->display();return 0; }?此程序最終運行結果如下:
? ? I’m base class!
很顯然這個和我們想要的不一樣,因為我們指向的test是派生類創建的對象,我們希望它指向派生類的函數。于是,C++提供了多態這一種機制。
要想形成多態必須具備以下三個條件:
- 必須存在繼承關系;
- 繼承關系中必須有同名的虛函數;
- 存在基類類型的指針或引用,通過該指針或引用調用虛函數。
這段程序最終運行結果如下:
? ? I’m derived class!
?
總結
以上是生活随笔為你收集整理的C++多态的概念及前提条件的全部內容,希望文章能夠幫你解決所遇到的問題。