Введение в перегрузку и переопределение в C ++
Давайте начнем с основных определений перегрузки и переопределения в C ++.
Перегрузка : имя функции такое же, но параметры и тип возвращаемых изменений. Поскольку мы узнаем разницу между перегруженными функциями во время компиляции, это также называется полиморфизмом времени компиляции.
Переопределение: это особенность языка объектно-ориентированного программирования, где функция дочернего класса имеет то же имя, что и функция класса родителя. Поскольку переопределяющая функциональность входит в картину, как только объект объявлен, и функции доступны с использованием объектов; то есть во время выполнения кода эта концепция переопределения также называется полиморфизмом времени выполнения.
У нас есть их синтаксис и способы программирования в последующих разделах.
Синтаксис перегрузки и переопределения
Вот синтаксис перегрузки и переопределения, приведенный ниже.
Синтаксис перегрузки:
return_type function_name ( int param_1, string param_2)
(
//function definition
)
return_type_2 function_name ( int param_1, string param_2)
(
//function definition
)
return_type function_name ( int param_1, int param_2)
(
//function definition
)
Все три из них вместе могут служить примером концепции перегрузки.
Переопределение синтаксиса:
Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);Class B : Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);
Выше приведен синтаксис переопределяющей функциональности. Основной вывод может быть выведен, как только мы объявим объект и вызовем те же методы из класса A и класса B. В функциональности переопределения «Object» играет важную роль.
Теперь давайте рассмотрим пример каждого из них, чтобы лучше узнать их функциональность.
Примеры перегрузки и переопределения в C ++
Вот примеры перегрузки и переопределения в C ++ с выводом, приведенным ниже:
Пример № 1 - Перегрузка
Начнем с простой программы.
Код:
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
Выход:
Теперь, что если я дам неправильные значения типа данных для переменных a, b?
Код:
int main()
(
int a = 10.8;
float b = 12;
calc(a);
calc(b);
calc(a, b);
)
Я только изменил основную часть из вышеуказанной программы, так что здесь идет вывод.
выход:
Он дает нам вывод, поскольку он собирается преобразовать значение с плавающей точкой в тип данных int, и дает нам вывод.
Теперь в качестве упражнения вы можете попробовать изменить тип возвращаемого значения функции и параметры и поэкспериментировать с ними.
Пример № 2 - переопределение
Ниже приведен пример переопределяющей функциональности в C ++.
Код:
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
Выход:
Посредством приведенного выше кода мы можем обнаружить, что когда ссылка на объект первого класса назначается объекту, созданному относительно нашего второго класса. И затем, когда мы получили доступ к методу переопределения, используя объект базового класса, мы можем четко заметить, что вывод производного класса был отображен. Эта концепция называется переопределением. Первый и второй классы - это базовый и производный класс соответственно. Результат вышеизложенного ниже:
В качестве упражнения вы можете попробовать перегрузить и перегрузить функцию вместе и проверить, возможно ли это, или проверить, как получается результат?
Как это работает?
Перегрузка: здесь нет особого момента, о котором мы могли бы помнить. Нам нужно убедиться, что тип возвращаемого значения или параметры внутри функции меняются. Если мы посмотрим выше на структуру программирования, функции объявляются первыми и дается их реализация.
Переопределение: синтаксис наследования и реализации функций - ключевые моменты, на которые следует обратить внимание. В приведенном выше примере мы можем заметить, что объявление функции с ключевым словом public совсем другое.
А в C ++ определение класса заканчивается точкой с запятой (;), и если нам нужно наследовать базовый класс от дочернего класса, мы используем символ двоеточия (:). Основная функциональность переопределения наблюдается, когда объекты объявлены и инициализированы для класса. После вызова функций с использованием объектов мы можем ясно понять концепцию переопределения.
преимущества
- Одним из основных преимуществ переопределения и перегрузки является экономия времени.
- Экономьте память.
- Читаемость кода повышена.
- Здесь, для концепции перегрузки функций, мы можем использовать разные имена функций для разных операций, исключая использование разных имен функций.
- Гибкость и удобство сопровождения кода становятся проще.
- В случае переопределения дочерний класс может иметь функции родительского класса и даже может иметь собственную реализацию этой функции.
- На объекты можно ссылаться, а функции родительского класса и дочернего класса могут быть доступны дочернему классу.
Вывод
Теперь мы ясно поняли концепции как перегрузки, так и переопределения. При перегрузке мы должны убедиться, что разница в перегруженных функциях существует либо на основе типа возвращаемого значения, либо на параметрах, хотя определение функции внутри них одинаково или различно.
А в случае переопределения, поскольку это концепция объектно-ориентированного программирования, мы можем использовать ее только в форме классов, использующих функциональность наследования.
Рекомендуемые статьи
Это руководство по перегрузке и переопределению в C ++. Здесь мы обсуждаем введение, как это работает, синтаксис, примеры и преимущества перегрузки и переопределения в C ++ при реализации кода. Вы также можете посмотреть следующие статьи, чтобы узнать больше -
- Перегрузка в C ++
- Перегрузка против Переопределения
- Переопределение в PHP
- Переопределение в C ++
- Переопределение в Java
- Полиморфизм в Яве
- Лучшие 11 функций и преимуществ C ++
- Переопределение в Python | Функция и правила