C++多态的概念及前提条件
生活随笔
收集整理的這篇文章主要介紹了
C++多态的概念及前提条件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在前面的所有列舉的程序中,函數(shù)的入口地址與函數(shù)名是在編譯時(shí)進(jìn)行綁定的,我們稱之為編譯期綁定,而多態(tài)的功能則是將函數(shù)名動(dòng)態(tài)綁定到函數(shù)入口地址,這樣的動(dòng)態(tài)綁定過程稱為運(yùn)行期綁定。編譯期綁定是指在程序編譯時(shí)就將函數(shù)名與函數(shù)入口地址綁定到一起,運(yùn)行期綁定是指在程序運(yùn)行時(shí)才將函數(shù)名與函數(shù)入口地址綁定到一起,而在運(yùn)行期綁定的函數(shù)我們稱其是多態(tài)的。
#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; }?此程序最終運(yùn)行結(jié)果如下:
? ? I’m base class!
很顯然這個(gè)和我們想要的不一樣,因?yàn)槲覀冎赶虻膖est是派生類創(chuàng)建的對(duì)象,我們希望它指向派生類的函數(shù)。于是,C++提供了多態(tài)這一種機(jī)制。
要想形成多態(tài)必須具備以下三個(gè)條件:
- 必須存在繼承關(guān)系;
- 繼承關(guān)系中必須有同名的虛函數(shù);
- 存在基類類型的指針或引用,通過該指針或引用調(diào)用虛函數(shù)。
這段程序最終運(yùn)行結(jié)果如下:
? ? I’m derived class!
?
總結(jié)
以上是生活随笔為你收集整理的C++多态的概念及前提条件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。