天天看點

虛函數1

虛函數聯系到多态,多态聯系到繼承。是以本文中都是在繼承層次上做文章。沒了繼承,什麼都沒得談。

下面是對C++的虛函數這玩意兒的了解。

一, 什麼是虛函數(如果不知道虛函數為何物,但有急切的想知道,那你就應該從這裡開始)

簡單地說,那些被virtual關鍵字修飾的成員函數,就是虛函數。虛函數的作用,用專業術語來解釋就是實作多态性(Polymorphism),

多态性是将接口與實作進行分離;用形象的語言來解釋就是實作以共同的方法,但因個體差異而采用不同的政策。下面來看一段簡單的代碼

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();

}      
int main(){   //main2

A a;

B b;

A* p1=&a;

A* p2=&b;

p1->print();

p2->print();

}      
class A{

public:

virtual void print(){ cout<<”This is A”<<endl;}  //現在成了虛函數了

};

class B:public A{

public:

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

};

毫無疑問,class A的成員函數print()已經成了虛函數,那麼class B的print()成了虛函數了嗎?      

繼續閱讀