【发布时间】:2011-06-27 12:47:22
【问题描述】:
我可能只是累了或者离 C++ 太远了,但是今天这个真的让我很惊讶:
#include <iostream>
class Interface
{
public:
virtual int aa() const = 0;
virtual int bb() const = 0;
};
class Usage : public Interface
{
private:
virtual int aa() const
{
int a = 10 * 10;
return a;
}
virtual int bb() const
{
int b = 20 * 20;
return b;
}
};
int main(int argc, char* argv[])
{
Interface* i = new Usage();
std::cout << i->bb() << std::endl;
return 0;
}
我希望编译器和/或链接器会抱怨函数签名错误或至少缺少实现。考虑到这是可行的,当它被顶级声明隐藏时,public/protected/private 修饰符的含义是什么?
这个规则在 C++ 中是如何调用的?
【问题讨论】:
标签: c++ inheritance virtual