Аргументы по умолчанию и виртуальная функция в C++

Опубликовано: 15 Сентября, 2022

Аргументы по умолчанию — это значения, предоставляемые во время объявления функции, так что значения могут быть назначены автоматически, если им не передан аргумент. В случае передачи любого значения значение по умолчанию переопределяется и становится параметризованным аргументом.

Виртуальная функция — это функция-член, объявленная в базовом классе и переопределяемая (переопределяемая) производным классом. Когда вы ссылаетесь на объект производного класса с помощью указателя или ссылки на базовый класс, вы можете вызвать виртуальную функцию для этого объекта и выполнить версию функции производного класса. Виртуальная функция также подпадает под полиморфизм времени выполнения.

Чтобы увидеть комбинированное применение аргументов по умолчанию с виртуальными функциями, давайте возьмем образец

Пример:

Выход:

Derived::fun(), x = 0

Если мы внимательно посмотрим на вывод, то увидим, что вызывается функция fun() производного класса и используется значение по умолчанию функции fun() базового класса.

Аргументы по умолчанию не участвуют в подписи (имя функции, тип и порядок) функций. Таким образом, сигнатуры функции « fun() » в базовом классе и производном классе считаются одинаковыми, поэтому функция « fun() » базового класса переопределяется . Кроме того, значение по умолчанию используется во время компиляции. Когда компилятор видит отсутствующий аргумент в вызове функции, он заменяет данное значение по умолчанию. Поэтому в приведенной выше программе значение x подставляется во время компиляции, а во время выполнения вызывается функция fun() производного класса.

Пример:

Вывод этой программы такой же, как и у предыдущей программы. Причина та же, значение по умолчанию подставляется во время компиляции. Fun() вызывается для 'bp', который является указателем базового типа. Поэтому компилятор подставляет 0 (а не 10).

C++