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嗎?

};

0 個評論

要回覆文章請先登錄註冊