Введение в перегрузку и переопределение в 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 ++ при реализации кода. Вы также можете посмотреть следующие статьи, чтобы узнать больше -

  1. Перегрузка в C ++
  2. Перегрузка против Переопределения
  3. Переопределение в PHP
  4. Переопределение в C ++
  5. Переопределение в Java
  6. Полиморфизм в Яве
  7. Лучшие 11 функций и преимуществ C ++
  8. Переопределение в Python | Функция и правила