c++中虛擬函式的理解
阿新 • • 發佈:2018-11-07
虛擬函式的作用,事實上就是實現了多型性,就是實現以共同的方法,但因個體差異而採用不同的策略。下面有程式碼例項來描述:
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嗎? };