Въведение в претоварването и преодоляването в 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 ++ с прилагане на код. Можете също да разгледате следните статии, за да научите повече -
- Претоварване в C ++
- Претоварване срещу преодоляване
- Преодоляване на PHP
- Повишаване в C ++
- По-важно в Java
- Полиморфизъм в Java
- Топ 11 функции и предимства на C ++
- Повишаване в Python | Функция и правила