定義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();
上述兩個輸出的內容是不同的,在C++中virtual表示多態,public、protected和private表示訪問權限,它們是正交的兩個概念。用private聲明虛函數,表示派生類對這個虛函數必需要有自己的實現,而不能調用基類的實現。