Увод у преоптерећење и прегласавање у Ц ++

Започнимо с основним дефиницијама преоптерећења и прегласавања у Ц ++.

Преоптерећење : Назив функције је исти, али се параметри и тип повратка мијењају. Пошто ћемо упознати разлику између преоптерећених функција током компајлирања, то се назива и полиморфизам сажимања времена.

Поништавање: Ово је карактеристика објектно-оријентисаног програмског језика где функција дечије класе има исто име као и функција родитељске класе. Као што превладавајућа функционалност улази у слику након декларисања објекта и приступања функцијама помоћу објеката; то јест током извођења кода, овај концепт превладавања назива се и полиморфизмом у току времена.

У наредним одељцима имамо њихову синтаксу и начине програмирања.

Синтакса преоптерећења и прегласавања

Овде је синтакса преоптерећења и прегласавања дата доле.

Преоптерећење синтаксе:

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
)
);

Горе је синтакса за превладавајућу функционалност. Главни излаз се може закључити када декларирамо објект и назовемо исте методе из класе А и класе Б. У функцији прегласавања „Објекта“ игра важну улогу.

Сада ћемо да видимо сваки пример за боље упознавање њихове функционалности.

Примери преоптерећења и прегласавања у Ц ++

Ево примера преоптерећења и прегласавања у Ц ++ са излазом даним у наставку:

Пример # 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;
)

Излаз:

Шта ако дам погрешне вредности типа података за променљиве а, б?

Шифра:

int main()
(
int a = 10.8;
float b = 12;
calc(a);
calc(b);
calc(a, b);
)

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

излаз:

Даје нам излаз јер ће претворити флоат вриједност у инт тип података и даје нам излаз.

Сада као вежбу можете покушати променити врсту и параметре враћања функције и играти се са њима.

Пример бр. 2 - прегласавање

Испод можемо дати пример превелике функционалности у Ц ++.

Шифра:

#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();
)

Излаз:

Кроз горњи код можемо утврдити да када се референца првокласног објекта додељује објекту креираном у односу на нашу другу класу. А онда када приступимо методу прегласавања помоћу објекта основне класе, можемо јасно приметити да је приказан излазни резултат класе. Овај концепт се назива превладавањем. Прва и друга класа су основна и изведена класа. Резултат горе наведеног је доле:

Да ли можете да покушате да прекомпонујете и преоптерећујете неку функцију заједно и проверите да ли је могуће или проверите како изгледа излаз?

Како то функционише?

Преоптерећење: Овде нема неке посебне тачке због које бисмо могли имати на уму. Морамо бити сигурни да се тип повратка или параметри унутар функције разликују. Ако горе погледамо програмску структуру, функције су прво декларисане и дата је њихова примена.

Поништавање: Синтакса насљеђивања и имплементација функција су кључне точке које се овдје требају примијетити. У горњем примеру можемо приметити да је декларација о функцији са јавном кључном речју сасвим другачија.

А у Ц ++, дефиниција класе завршава полуслатком (;), а ако требамо наследити основну класу према дечијем разреду, користићемо двоточку (:) симбол. Главна функционалност прегласавања примећује се када се објекти декларишу и иницијализирају за класу. Након позивања функција помоћу објеката, можемо јасно разумети концепт прегласавања.

Предности

  • Главна предност ових преоптерећења и преоптерећења је уштеда времена.
  • Уштедите простор у меморији.
  • Повећава се читљивост кода.
  • Овде за концепт преоптерећења функције можемо користити различита иста имена функција за различите операције елиминишући употребу различитих имена функција.
  • Флексибилност и одрживост кода постају лакша.
  • У случају превладавања, дечија класа може имати функције матичне класе и чак може имати сопствену имплементацију те функције.
  • Објекти се могу референцирати, а функцијама и родитељске и дјечје класе може приступити дјечја класа.

Закључак

Сада смо јасно разумели концепте и преоптерећења и прекомерног оптерећења. Код преоптерећења морамо бити сигурни да разлика у преоптерећеним функцијама постоји или на основу типа повратка или параметара, мада је дефиниција функција унутар њих иста или различита.

А у случају превладавања, будући да је то објектно оријентисани програмски концепт, можемо користити само у облику класа користећи функцију насљеђивања.

Препоручени чланци

Ово је водич за преоптерећење и прегласавање у Ц ++. Овде смо расправљали о уводу, како то ради, синтакси, примерима и предностима преоптерећења и прегласавања у Ц ++ са имплементацијом кода. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Преоптерећење у Ц ++
  2. Преоптерећење вс Превладавање
  3. Превладавање у ПХП-у
  4. Превладавање у Ц ++
  5. Превладавање у Јави
  6. Полиморфизам у Јави
  7. Топ 11 функција и предности Ц ++
  8. Превладавање у Питхон-у | Функција и правила

Категорија: