Переопределение функций в C++ [Переопределение функций и переопределение с примерами]

Опубликовано: 2021-05-25

Переопределение функций в C++ — это функция, которая позволяет нам использовать функцию в дочернем классе, которая уже присутствует в его родительском классе. Дочерний класс наследует все данные-члены и функции-члены, присутствующие в родительском классе. Если вы хотите переопределить какие-либо функции в дочернем классе, вы можете реализовать переопределение функций. Переопределение функции означает создание более новой версии функции родительского класса в дочернем классе.

Оглавление

Функции С++

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

Объявление функции передает компилятору имя функции, параметры и тип возвращаемого значения. Определение функции определяет тело функции. Стандартная библиотека C++ состоит из множества встроенных функций, которые может вызывать программа. Функция может быть методом, процедурой или подпрограммой.

Определение функции

Общий синтаксис функции C++:

return_type имя_функции (список параметров) {

тело функции

}

Любая функция C++ состоит из заголовка функции и тела. Компоненты функции C++:

Тип возвращаемого значения — тип возвращаемого значения представляет собой тип возвращаемого значения функции.

Имя функции — это обозначает имя функции. Имя функции вместе со списком параметров составляют сигнатуру функции.

Параметры — параметр — это заполнитель для значения, возвращаемого функцией. При вызове функции значение передается параметру, который называется фактическим параметром.

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

Вызов функции

Чтобы использовать функцию в C++, вы должны вызвать или вызвать функцию. Управление передается функции, затем функция выполняет требуемую задачу, а оператор return возвращает управление обратно в основную программу.

Вам нужно передать необходимые параметры, включая имя функции, для вызова функции. Если функция возвращает значение, то это значение можно сохранить. Существует несколько способов передачи аргументов функции при ее вызове. Типы вызовов: вызов по значению, вызов по ссылке и вызов по указателю.

Переопределение функций в C++

Когда производный класс или дочерний класс определяет функцию, которая уже определена в базовом или родительском классе, в C++ это называется переопределением функции. Переопределение функций помогает нам достичь полиморфизма во время выполнения. Это позволяет программистам выполнять конкретную реализацию функции, уже используемой в базовом классе.

Пример:

Источник

Изучите приведенный выше пример. Здесь родительский класс — «Базовый», а дочерний класс — «Производный».

Вывод вышеуказанной программы будет:

Производная функция

Функция print() объявлена ​​как в базовом, так и в производном классах. Когда мы вызываем функцию print() через объект класса Derived, «derived1», функция print() из класса Derived вызывается и выполняется путем переопределения той же функции базового класса.

Работа принципа переопределения функции

Источник

Как видно из изображения выше, функция базового класса была переопределена, поскольку мы вызывали ту же функцию через объект класса Derived.

Если мы вызовем функцию print() через объект класса Base, функция не будет переопределена. Например:

//Вызов функции базового класса

Базовая база1;

база1.печать(); // Вывод: базовая функция

Вывод приведенного выше кода будет:

Базовая функция

Как получить доступ к переопределенным функциям в C++

Вы должны использовать оператор разрешения области «::» для доступа к переопределенной функции. Другой способ получить доступ к переопределенной функции — использовать указатель базового класса для указания на объект производного класса и вызывать функцию через указатель.

Пример:

Источник

Вывод вышеуказанной программы будет:

Производная функция

Базовая функция

Работа доступа переопределенной функции

Источник

Здесь производный оператор 1.print() обращается к функции print() класса Derived, а оператор производный2.Base::print() обращается к функции print() базового класса.

Вызов переопределенной функции C++ из производного класса

В этом коде мы вызываем переопределенную функцию из самого класса Derived.

Работа переопределенного вызова функции из производного класса

Источник

Команда Base::print() вызывает переопределенную функцию из класса Derived.

Изучайте онлайн -курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Перегрузка функций и переопределение функций

Перегрузка функций достигается во время компиляции и может выполняться в базовом и производном классах. Это помогает предоставить несколько определений функций, изменив сигнатуру функций, например тип данных параметров или возвращаемые типы.

Переопределение функции достигается во время выполнения. При переопределении базовый класс переопределяется в производном классе с тем же возвращаемым типом и параметрами. Другие различия между переопределением функций и перегрузкой функций в C++:

1. Наследование

Переопределение функции может использоваться только с наследованием класса, в то время как перегрузка функции не требует наследования класса.

2. Сигнатура функции

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

3. Объем функций

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

4. Поведение функции

Переопределение функции необходимо, когда функция производного класса должна работать иначе или с дополнительными функциями, чем функция базового класса. Перегрузка функций реализуется, когда функции с одинаковыми именами должны вести себя по-разному в зависимости от переданных им параметров.

Если вам интересно узнать больше о разработке программного обеспечения с полным стеком, ознакомьтесь с программой Executive PG upGrad и IIIT-B в разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов тщательного обучения, более 9 проектов, и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Что такое переопределение функции?

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

В чем разница между переопределением функции и перегрузкой?

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

Что такое наследование в C++?