我可能會很好只是累了或太長時間遠離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++中調用?
哈,就是這樣,你讓我。完美的答案。 –