1. 程式人生 > >c++中虛擬函式的理解

c++中虛擬函式的理解

虛擬函式的作用,事實上就是實現了多型性,就是實現以共同的方法,但因個體差異而採用不同的策略。下面有程式碼例項來描述:
class A{

public:

void print(){ cout<<”This is A”<<endl;}

};

class B:public A{

public:

void print(){ cout<<”This is B”<<endl;}

};

int main(){   //為了在以後便於區分,我這段main()程式碼叫做main1

A a;

B b;

a.print();

b.print();

}

通過class A和class B的print()這個介面,這裡是直接操作物件,輸出的結果分別是This is A和This is B。當操作指向類的指標時,就面臨多型性的選擇問題,如下例,最後的執行結果是一樣的,都是This is A。

int main(){   //main2

A a;

B b;

A* p1=&a;

A* p2=&b;

p1->print();

p2->print();

}
如下當在基類中使用虛擬函式描述符時,再去操作指向類的指標時,結果就是分別是This is A和This is B了。
class A{

public:

virtual void print(){ cout<<”This is A”<<endl;}  

};

class B:public A{

public:

void print(){ cout<<”This is B”<<endl;}  //這裡需要在前面加上關鍵字virtual嗎?

};