c++動態聯編和靜態聯編
阿新 • • 發佈:2019-02-16
將一個呼叫函式者聯結上正確的被呼叫函式,這過程叫做函式聯編。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");
}
總結:
在繼承中,只有當使用指標或者引用的方式來呼叫虛擬函式時,虛擬函式才能發揮多型性的作用。
只有被說明為虛擬函式的那個成員函式才具有多型性。