實調用指在調用函式時,被調用函式的地址是在編譯階段靜態確定的。這種函式的調用的方式就是實調用。
基本介紹
- 中文名:實調用
- 外文名:Real Call
- 學科:計算機
- 領域:計算機編程
- 程式語言:C++
實調用是相對於虛調用被提出的。C++多態機制的實現依賴於虛函式。對虛函式的調用既可以採用虛調用,也可以採用實調用。考察如下代碼:
#include <iostream>using namespace std;class Base{public: virtual void show(){ cout<<"In Base"<<endl; }};class Derived:public Base{public: void show(){ cout<<"In Derived"<<endl; }};int main(){ Base b; b.show(); Derived d; d.show(); //對函式show()的實調用 d.Base::show(); //對函式show()的實調用 Base *pb=NULL; pb=&d; pb->show(); //對函式show()的虛調用 pb->Base::show(); //對函式show()的實調用}程式輸出結果:
In Base
In Derived
In Base
In Derived
In Base
In Base
In Derived
In Base
考察代碼可以看出,當對虛函式採用虛調用的時候,因為函式的入口地址根據基類指針所指向的真實對象在運行時確定,這樣就實現了多態。而採用實調用的話,那么虛函式的入口地址在編譯階段靜態確定的,就不能實現多態了。
