1.虛函數(shù)
如果不使用virtual關(guān)鍵字烁兰,當(dāng)使用基類的指針p指向派生類的對(duì)象時(shí)延赌,調(diào)用的p的一個(gè)方法(比如print)時(shí)蝌蹂,調(diào)用的是基類里面的print方法许饿。
如果使用virtual關(guān)鍵字,則可以調(diào)用派生類里的print方法巴元。
class Base
{
public:Base(){}
public:
virtual void print(){cout<<"Base";}
};
class Derived:public Base
{
public:Derived(){}
public:
void print(){cout<<"Derived";}
};
int main()
{
Base *point=new Derived();
point->print();
}
2.純虛函數(shù):
純虛函數(shù)所在的類被稱為抽象類毡咏,只能用來被繼承而不能實(shí)例化。一個(gè)虛擬函數(shù)只是提供了一個(gè)可被子類型改寫的接口逮刨。
class Query {
public:
// 聲明純虛擬函數(shù)
virtual ostream& print( ostream&=cout ) const = 0;
// ...
};