#include<iostream>
using namespace std;
class base
{
public:
virtual void add() {
cout << "hi";
}
};
class derived : public base
{
private:
void add() {
cout << "bye";
}
};
int main()
{
base *ptr;
ptr = new derived;
ptr->add();
return 0;
}
输出是bye
我对如何实现没有问题。我了解您使用 vtables,并且 derived 的 vtable 包含新的 add() 函数的地址。但是 add() 是私有的,当我尝试在类外访问它时,编译器不应该产生错误吗?不知何故,它似乎不正确。