Я видел, как он заявил, что С++ имеет имя, скрывающееся в целях уменьшения проблемы хрупкого базового класса. Тем не менее, я определенно не вижу, как это помогает. Если базовый класс вводит функцию или перегрузку, которая ранее не существовала, она может конфликтовать с теми, которые были введены производным классом, или неквалифицированными вызовами глобальных функций или функций-членов, но я не вижу, как это отличается для перегрузок, Почему перегрузки виртуальных функций должны обрабатываться по-разному, ну, и любая другая функция?
Изменить: Позвольте мне показать вам немного больше, о чем я говорю.
struct base {
virtual void foo();
virtual void foo(int);
virtual void bar();
virtual ~base();
};
struct derived : base {
virtual void foo();
};
int main() {
derived d;
d.foo(1); // Error- foo(int) is hidden
d.bar(); // Fine- calls base::bar()
}
Здесь foo(int)
обрабатывается по-разному с bar()
, потому что это перегрузка.