Метод производного класса скрывает метод базового класса virtual
вместо того, чтобы заменить его
Несовместимые типы предотвращают переопределение, происходит, когда метод производного класса имеет то же имя и номер параметров как метод базового класса virtual
, но:
Отличайтесь по крайней мере по одному типу параметра.
Отличайтесь по присутствию или отсутствию спецификаторов, таких как const
.
Метод производного класса скрывает метод базового класса virtual
вместо того, чтобы заменить его.
Риски включают следующее:
Если вы предназначаете, чтобы метод производного класса заменил метод базового класса, переопределение не происходит.
Поскольку метод базового класса скрыт, вы не можете использовать объект производного класса вызвать метод. Если вы используете объект производного класса вызвать метод с параметрами базового класса, метод производного класса называется вместо этого. Для параметров, типы которых не совпадают с аргументами, которые вы передаете, бросок происходит, если это возможно. В противном случае отказ компиляции происходит.
Возможные решения включают следующее:
Если вы хотите, чтобы метод производного класса заменил метод базового класса, изменил интерфейс метода производного класса.
Например, измените тип параметра или добавьте спецификатор const
при необходимости.
В противном случае добавьте строку
в объявление производного класса. Таким образом можно получить доступ к методу базового класса с помощью объекта производного класса.using Base_class_name::method_name
Группа: Объектно-ориентированный |
Язык: C++ |
Значение по умолчанию: на |
Синтаксис командной строки: VIRTUAL_FUNC_HIDING |
Влияние: носитель |