Шта је преоптерећење у Ц ++?

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

Ц ++ омогућава нам писање функција са истим именом, али с разликом у типовима података или у броју аргумената који су му предати, ова функција је позната под називом Фунцтион Оверлоадинг у Ц ++. Ова функција омогућава програмерима да дефинишу функције са истим именом унутар истог опсега. Са истим називом, функције представљају исту функционалност омогућавајући постизање полиморфизма у компилацији. Преоптерећење функције има једну предност што побољшава читљивост кода.

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

Како преоптерећење функционише у Ц ++?

  • Функција Преоптерећење: Омогућује нам дефинирање функције с истим називом, али разликује функције овисно о врсти параметара који су им прослијеђени или броју параметара који су им прослијеђени. Дакле, све ће функције имати исти назив, али имат ће или различиту врсту података или ће имати различит број параметара који су му пренесени. Кад се функција позове, преводилац ће изабрати функцију са врстом подударања параметра и бројем аргумената. Сада његови програмери могу да бирају коју ће функцију да позивају у складу са захтевима. Они могу одабрати одговарајућу функцију тако што ће проследити параметре пратећи правила.
  • Преоптерећење оператора: Омогућава оператерима да раде за кориснички дефинисане типове података, тј. Класе. Постојећи оператори су преоптерећени и дају им моћ да раде на корисничкој класи и објектима. Преоптерећење оператера постиже се дефинисањем функције посебним именом. Функција ће имати име „оператор“, а затим симбол оператора. Симбол оператора можемо директно користити на корисничком дефинисаном типу података и извести операцију. Неопходне акције или операције дефинишемо у тој специјалној функцији од нас. Помоћу преоптерећења оператора можемо изводити операције различитих типова на истој врсти података.

Врсте преоптерећења у Ц ++

Функција Преоптерећење се на било који начин може постићи у погледу употребе параметара. Када кажемо употреба параметара на које се односи, врсту параметара или бројање параметара или редослед параметара. Дакле, функција цалц (инт к, флоат и) која има параметре (инт к, флоат и) разликује се од функције која је дефинисана као цалц (флоат к, инт и) који имају различите параметре са различитим типом података.

Постоји неколико типова код којих се може постићи преоптерећење функције. Погледајмо једноставан пример преоптерећења функције у Ц ++.

#include
using namespace std;
class Display (
public:
static void show (char message() ) (
cout<< "Only Message:" << message << endl;
)
static void show (int messageId, char message()) (
cout<< "Message with Id:";
cout << messageId << " Message:" << message << endl;
)
);
int main (void) (
Display obj;
char message() = "Welcome";
int messageId = 10;
obj.show(message); //calling overloaded function with 1 parameter
obj.show(messageId, message);//calling overloaded function with 2 parameters
return 0;
)

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

Излаз:

Једина порука: Добродошли

Порука са Ид: 10 Порука: Добродошли

Преоптерећење оператора може се постићи на готово свим уграђеним типовима података доступним у Ц ++. Не постоје такве различите врсте преоптерећења оператера, али приступи могу бити различити који се користе за постизање преоптерећења оператера. Оператери као што су Унар, Бинарни, Релативни, Додела итд. Могу бити преоптерећени у Ц ++.

Погледајмо једноставан пример преоптерећења ++ оператора. У овом примеру, уместо примитивног типа података, користићемо оператор ++ на објектима класе који је дефинисан од стране корисника.

#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)
#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)

Дакле, имамо објекат чија ће почетна висина бити постављена на 80, а повећаће се за 5 када преко њега позовемо ++ оператера.

Излаз:

Висина бицикла је: 80
Висина бицикла је: 85

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

Испод су наведена различита правила преоптерећења Ц ++:

Правила за преоптерећење функције

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

Правила за преоптерећење оператера

  • Само уграђени оператори могу бити преоптерећени, нови оператери не могу бити преоптерећени.
  • Постоје четири оператера која се не могу преоптеретити . (избор члана), :: (резолуција опсега), . * (избор члана помоћу показивача на функцију) и ?: (тернарни оператор).
  • Преоптерећени оператор ће садржавати најмање један операнд корисничко дефинисаног типа података.
  • Постоје одређени оператори који се не могу преоптеретити употребом функције пријатеља, али могу се преоптеретити као чланска функција.

Закључак

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

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

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

  1. Преоптерећење у ПХП-у
  2. Копирајте конструктор у Ц ++
  3. Преоптерећење вс Превладавање
  4. Изјава о пребацивању на Ц ++
  5. Преоптерећење у Јави
  6. Питхон Оверлоадинг

Категорија: