Информация об изменениях

Сообщение Re[3]: почему ругается компилятор? MSVC 2010 от 30.06.2025 16:16

Изменено 30.06.2025 16:51 rg45

Re[3]: почему ругается компилятор? MSVC 2010
Здравствуйте, sushko, Вы писали:

S>Странно мне это. Мне казалось, что по логике родительский print должен был "становиться рядом" с дочерним. Поскольку набор аргументов разный, то дескрипторы (если я правильно понимаю этот термин) функций не должны пересекаться...


Так происходит, когда перегруженные функции находятся в одном классе. А одноименные функции производных классов скрывают функции базового класса. Так было, начиная с C++98. И даже раньше.

Собственно, с пространствами имен ведь ровно то же самое.
Re[3]: почему ругается компилятор? MSVC 2010
Здравствуйте, sushko, Вы писали:

S>Странно мне это. Мне казалось, что по логике родительский print должен был "становиться рядом" с дочерним. Поскольку набор аргументов разный, то дескрипторы (если я правильно понимаю этот термин) функций не должны пересекаться...


Так происходит, когда перегруженные функции находятся в одном классе. А одноименные функции производных классов скрывают функции базового класса. Так было, начиная с C++98. И даже раньше. И логика тут простая — производный класс может объявить повторно любой из членов базового класса, в т.ч. и функцию-член — с идентичными параметрами и модификаторами. И это не будет вызывать ошибок компиляции.

Собственно, с пространствами имен ведь ровно то же самое.