定义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声明虚函数,表示派生类对这个虚函数必需要有自己的实现,而不能调用基类的实现。