虚拟函数问题
各位高手,我刚刚接触虚拟函数,遇到问题:
class base{
public:
virtual void test(){
cout << "base" << endl;
}
};
class derived : public base{
private:
virtual void test(){ //这里在private内重新定义虚拟函数
cout << "derived" << endl;
}
};
void main(){
base *pb = new derived;
pb->test(); //编译成功
}
我在派生类derived里面将虚拟函数重新定义于private区域内,所以应该无法被程序调用,但是上面却运行成功,显示:derived。
不知道为什么?哪位大侠明白,拜托给我讲一讲,谢谢!