C++中隐藏规则背后的基本原理是什么?
class A { void f(int); }
class B : public A { void f(double); } // B::f(int) is hidden
如果这是一个有意义的功能,我认为也应该可以隐藏函数而不定义具有相同名称的新函数:像这样:
class B : public A { hide void f(double); }
但这是不可能的。
我不认为它简化了编译器的工作,因为当你明确使用指令时编译器必须能够取消隐藏函数:
using
class B : public A { using A::f; void f(double); } // B::f(int) NOT hidden
那么,怎么会有隐藏规则呢?
嗯,这三个答案似乎都很好,并且显示了隐藏规则的不同理由。我不确定我应该接受哪个答案。