1. 程式人生 > >c++動態聯編和靜態聯編

c++動態聯編和靜態聯編

將一個呼叫函式者聯結上正確的被呼叫函式,這過程叫做函式聯編。c++中的聯編分兩種,分為靜態聯編和動態聯編。
為加virtual時是靜態聯編;加入virtual是動態聯編。只有在使用指標或者引用時,才能實現在執行時的動態聯編。

#include<iostream>
#include<stdlib.h>
using namespace std;
class poser
{
public:
    virtual void beast()const{ cout << "一般選手一拳的力量為260磅" << endl; }//說明為虛擬函式,指標指向哪個物件,就相應呼叫哪個物件的函式。
protected: int age; }; class ali :public poser { public: void beast()const{ cout << "阿里一拳的力量為420磅" << endl; } }; class lewis :public poser { public: void beast()const{ cout << "劉易斯一拳的力量為480磅" << endl; } }; class tyson :public poser { public: void beast()const
{ cout << "泰森一拳的力量為500磅" << endl; } }; class holy :public poser { public: void beast()const{ cout << "霍利一拳的力量為350磅" << endl; } }; void main() { //poser*a[5]; poser*p; int choice, i; for (i = 0; i < 5; i++) { cout << "(1)阿里(2)劉易斯(3)泰森(4)霍利" << endl; cin
>> choice; switch (choice) { case 1:p = new ali; break; case 2:p = new lewis; break; case 3:p = new tyson; break; case 4:p = new holy; break; default:p = new poser; break; } //a[i] = p; //a[i]->beast(); p->beast(); } system("pause"); }

總結:
在繼承中,只有當使用指標或者引用的方式來呼叫虛擬函式時,虛擬函式才能發揮多型性的作用。
只有被說明為虛擬函式的那個成員函式才具有多型性。