Въведение в претоварването и преодоляването в C ++

Нека започнем с това, като имаме основните дефиниции за Overloading и Overriding в 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
)
);

По-горе е синтаксисът за преобладаващата функционалност. Основният изход може да се направи след като декларираме обект и извикаме същите тези методи от клас А и клас Б. Във функционалността на преодоляването на „обекта“ играе важна роля.

Сега нека да видим един пример за запознаване по-добре с тяхната функционалност.

Примери за претоварване и презаписване в 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);
)

Промених само основната част от горната програма, така че тук излиза изхода.

изход:

Той ни дава изхода, тъй като ще преобразува стойността на float във тип данни 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();
)

изход:

Чрез горния код можем да открием, че когато препратката на първокласен обект е присвоена на обекта, създаден по отношение на нашия втори клас. И тогава, когато осъществихме достъп до метода на замяна, използвайки обекта на базовия клас, можем ясно да забележим, че изведеният изходен клас е показан. Тази концепция се нарича преодоляване. Първият и Вторият клас са съответно базовият и полученият клас. Резултатът от горното е по-долу:

Като упражнение можете ли да опитате да отменяте и претоварвате функция заедно и да проверите дали е възможно или да проверите как се оказва изходът?

Как работи?

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

По-важно: Синтаксисът на Наследяването и изпълнението на функции са ключовите моменти, които трябва да се забележат тук. В горния пример можем да забележим, че декларацията за функция с публична ключова дума е съвсем различна.

И в C ++, дефиницията на клас завършва с точка-запетая (;) и ако трябва да наследим базовия клас към детския клас, използваме символа двоеточие (:). Основната функционалност на отменянето се наблюдава, когато обектите се декларират и инициализират за класа. След извикването на функции, използващи обектите, след това можем ясно да разберем концепцията за отменяне.

Предимства

  • Основното предимство на тези пренапрежения и претоварвания е икономия на време.
  • Спестете място в паметта.
  • Четенето на кода е повишено.
  • Тук за концепция за претоварване на функции можем да използваме различни едни и същи имена на функции за различни операции, елиминирайки използването на различни имена на функции.
  • Гъвкавостта и поддръжността на кода стават по-лесни.
  • В случай на преодоляване, класът на детето може да има функции на родителски клас и дори може да има собствена реализация на тази функция.
  • Обектите могат да бъдат реферирани и функциите както на родителския клас, така и на детския клас могат да бъдат достъпни от детския клас.

заключение

Вече ясно разбрахме понятията както за претоварване, така и за преодоляване. При претоварване трябва да се уверим, че разликата във функциите на претоварване съществува или въз основа на типа връщане или параметрите, въпреки че определението на функциите вътре в тях е същото или различно.

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

Препоръчителни статии

Това е ръководство за претоварване и преодоляване в C ++. Тук обсъждаме въвеждането, как работи, синтаксиса, примерите и предимствата на претоварването и преодоляването в C ++ с прилагане на код. Можете също да разгледате следните статии, за да научите повече -

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