Объяснение переопределения функций в C++
Опубликовано: 2022-11-09Что такое функция?
Функция — это часть кода для выполнения заданной задачи в программе. Важно иметь непосредственные знания о наследовании, чтобы узнать, что функция, переопределяющая реализацию наследования, является мандатом этой функции. Функция C++ — это набор операторов, объединенных вместе для выполнения задачи. Все программы имеют функцию main(), а отдельные программы имеют дополнительные функции. Объявление функции отправляет имя функции, тип возвращаемого значения и параметры компилятору для определения тела функции по определению функции. Функция может быть процедурой, методом или подпрограммой, и все функции C++ состоят из заголовка и тела.
Синтаксис функции С++: -
return_type имя_функции (список параметров) {
тело функции
}
Компоненты : -
- Тип возвращаемого значения — указывает тип возвращаемого значения функции.
- Имя функции — это имя функции, которое составляет сигнатуру функции и список параметров.
- Параметры — это заполнитель для значения, которое возвращает функция. При вызове функции значение, переданное параметру, называется фактическим параметром.
- Тело функции . Тело функции содержит список операторов, определяющих задачу функции.
Как вызвать функцию
Функция должна быть вызвана или вызвана перед использованием, после чего ей передается управление для выполнения необходимой задачи. После этого оператор return возвращает управление основной программе. Параметры и имя функции должны передаваться для вызова функции. Аргументы могут быть переданы в функцию несколькими способами при ее вызове. Типы вызовов следующие: -
- Вызов по значению
- Звонок по ссылке
- Вызов по указателю
Изучайте онлайн-курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.
Переопределение функций в C++
Переопределение C++ — это идея, с помощью которой определяется функция с таким же именем. Функция базового класса при переопределении переопределяется в производном классе, который переопределяет функцию базового класса. Реализация полиморфизма во время выполнения также может быть определена как переопределение функции. Здесь время выполнения программы переопределяет функцию.
Переопределение функций позволяет программистам использовать функцию в дочернем классе, найденную в его родительском классе. В результате дочерний класс наследует каждый член данных и функции-члены, найденные в родительском классе. Для переопределения любой функциональности дочернего класса вы должны реализовать переопределение функции. Под переопределением функции понимается создание новой версии функции родительского класса в дочернем классе.
Синтаксис для реализации переопределения функций в C++
Когда одна и та же функция, определенная как в базовом, так и в производном классе, вызывается с использованием объекта из производного класса, она выполняет функцию производного класса. Это переопределение функции в C++.
Ниже приведен наиболее часто используемый синтаксис для реализации переопределения функции в C++:
// Программа C++ для демонстрации переопределения функций
#include <иопоток>
использование пространства имен std;
класс База {
публичный:
пустая печать () {
cout << «Базовая функция» << endl;
}
};
Производный класс: общедоступная база {
публичный:
пустая печать () {
cout << «Производная функция» << endl;
}
};
интервал основной () {
производное производное1;
производный1.print();
вернуть 0;
}
Выход
Производная функция
Это переопределяет функцию базового класса в производном классе. Следовательно, возвращаемый тип, параметры_функции и имя_функции должны быть одинаковыми для достижения переопределения функции.
Популярные курсы и статьи по программной инженерии
Популярные программы | |||
Программа Executive PG в разработке программного обеспечения - IIIT B | Программа сертификации блокчейна — PURDUE | Программа сертификации кибербезопасности - PURDUE | MSC в области компьютерных наук - IIIT B |
Другие популярные статьи | |||
Зарплата облачного инженера в США в 2021-2022 гг. | Заработная плата архитектора решений AWS в США | Зарплата бэкенд-разработчика в США | Зарплата Front End Developer в США |
Заработная плата веб-разработчика в США | Вопросы на собеседовании Scrum Master в 2022 году | Как начать карьеру в сфере кибербезопасности в 2022 году? | Варианты карьеры в США для студентов инженерных специальностей |
Как работает переопределение функций в C++
ООП должны позволять производным классам наследовать функции родительского класса. Переопределение функций позволяет программистам переопределять любые функции внутри класса в конкретном производном классе. Это особенно полезно, когда дочернему классу нужен свой вариант функциональности.
Ниже приведен простой пример переопределения функций в C++ для лучшего понимания:
#include <иопоток>
использование пространства имен std;
класс parent_class
{
публичный:
печать виртуальной пустоты()
{
cout << "\nЭто метод print()"
«базового класса»;
}
};
класс производный_класс : общедоступный родительский_класс
{
публичный:
// Переопределение функции — новое определение
// метод печати базового класса
недействительная печать ()
{
cout << "\nЭто метод print()"
«производного класса»;
}
};
// Код драйвера
основной ()
{
объект производного_класса;
объект.print();
}
Доступ к переопределенной функции в C++
Оператор разрешения области видимости используется для доступа к переопределенной функции базового класса в C++. Доступ к переопределенной функции также можно получить, используя указатель базового класса, чтобы указать на объект производного класса, а затем вызвать функцию из указателя.
// Программа C++ для доступа к переопределенной функции
// в main() с использованием оператора разрешения области видимости ::
#include <иопоток>
использование пространства имен std;
класс База {
публичный:
пустая печать () {
cout << «Базовая функция» << endl;
}
};
Производный класс: общедоступная база {
публичный:
пустая печать () {
cout << «Производная функция» << endl;
}
};
интервал основной () {
производное производное1, производное2;
производный1.print();
// доступ к функции print() базового класса
производный2.Base::print();
вернуть 0;
}
Выход
Производная функция
Базовая функция
Оператор в синтаксисе; производный2.Base::print(); дает доступ к функции print() базового класса.
Вызов переопределенной функции из производного класса
Вы можете использовать наследование, чтобы изменить поведение функции. Однако иногда вам не нужно изменять или заменять функциональность базового/родительского класса. Вместо этого необходимо добавить больше функций.
Ниже приведен пример использования переопределенной функции вызова из производного класса.
// Программа C++ для вызова переопределенной функции
// из функции-члена производного класса
#include <иопоток>
использование пространства имен std;
класс База {
публичный:
пустая печать () {
cout << «Базовая функция» << endl;
}
};
Производный класс: общедоступная база {
публичный:
пустая печать () {
cout << «Производная функция» << endl;
// вызов переопределенной функции
База::печать();
}
};
интервал основной () {
производное производное1;
производный1.print();
вернуть 0;
}
Выход
Производная функция
Базовая функция
В этой программе переопределенная функция была вызвана внутри класса Derived.
Производный класс: общедоступная база {
публичный:
пустая печать () {
cout << «Производная функция» << endl;
База::печать();
}
};
Код Base::print(); вызывает переопределенную функцию в классе Derived.
Перегрузка функций и переопределение функций
Вы можете добиться перегрузки функций во время компиляции, обычно это делается в производных и базовых классах. Он предоставляет более одного определения функции, изменяя сигнатуру каждой функции, например тип данных или возвращаемый тип параметров.
С другой стороны, переопределение функции может быть достигнуто во время выполнения. Базовый класс при переопределении переопределяется в производном классе с теми же параметрами и тем же типом возвращаемого значения. Давайте выясним, какие еще особенности отличают эти две функции.
Переопределение | Перегрузка | |
Наследование | Требуется наследование классов | Не требует наследования классов |
Подпись функции | Отличается в сигнатуре либо типом, либо количеством параметров. | Сигнатуры функций остаются прежними |
Объем функций | Функции различаются по объему | Владеет той же областью |
Поведение функции | Требуется, когда функция производного класса работает иначе или с дополнительными функциями, чем функция базового класса. | Требуется, когда функции с одинаковым именем ведут себя по-разному в зависимости от заданных параметров. |
Вывод
Переопределение функций в C++ помогает сэкономить место в памяти и сохранить удобочитаемость и согласованность любого кода. Это также помогает легко сделать код повторно используемым. Излишне говорить, что знание переопределения функций является важным навыком, если вы видите свое будущее в программировании.
Если вы хотите присоединиться к надежному и премиальному курсу, чтобы начать свою карьеру в этой области, вы можете подписаться на степень магистра компьютерных наук upGrad на upGrad. Вот некоторые из ключевых моментов этой программы:
- Изучите стек MERN, микросервисы, JavaScript и т. д.
- Полезное обучение в Cloud Labs
- Поэкспериментируйте с инструментами, используемыми на Netflix, LinkedIn, Facebook и т. д.
- Получите навыки работы с более чем 10 инструментами и языками программирования
- Круглосуточная поддержка студентов
Как происходит переопределение функции?
Переопределение функции C++ происходит через наследование, т.е. когда один класс наследует другой класс. Когда производный класс и базовый класс имеют функции-члены, имеющие одинаковый тип возвращаемого значения, имя и список аргументов, это называется переопределением функций.
В чем разница между перегрузкой функций и переопределением функций в C++?
Переопределение функций происходит, когда функции имеют один и тот же прототип в базовом и производном классах. Перегрузка функций выполняется, когда в одном классе существует более одной функции с одинаковым именем.
Каковы особенности перегрузки функций в C++?
Перегрузка функций в C++ в основном используется для улучшения читаемости кода. Программисты используют его, поэтому им не нужно запоминать многочисленные имена функций. Классы с несколькими функциями, разными параметрами и одним и тем же именем называются перегруженными.