定義private virtual function是有意義的,代碼如下:
class B
{
public:
virtual `B();
private:
virtual char* id()
{
return "Base";
}
public:
void Print(){ printf( "Hello,I am %s", id() ); }
}
class D : public B
{
private:
virtual char* id()
{
//由于是private,這里不能用B::id();
return "Derived";
}
}
B* base = new B();
base->Print();
B* derived = new D();
derived->Print();
上述兩個(gè)輸出的內(nèi)容是不同的,在C++中virtual表示多態(tài),public、protected和private表示訪問權(quán)限,它們是正交的兩個(gè)概念。用private聲明虛函數(shù),表示派生類對(duì)這個(gè)虛函數(shù)必需要有自己的實(shí)現(xiàn),而不能調(diào)用基類的實(shí)現(xiàn)。