我可能会很好只是累了或太长时间远离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++中调用?
哈,就是这样,你让我。完美的答案。 –