Какое обоснование правила скрытия на С++?
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
Итак, как получилось правило скрытия?
Хум, все три ответа кажутся хорошими и показывают разные соображения для правила сокрытия. Я не уверен, какой ответ я должен принять.