Co to jest przeciążenie w C ++?

C ++ umożliwia pisanie elastycznego i łatwego do zrozumienia kodu przy użyciu koncepcji znanej jako Przeciążenie. Pozwala osiągnąć różne funkcje w obrębie istniejącego kodu przy bardzo minimalnych zmianach, zmniejszając w ten sposób duplikat kodu. Zasadniczo istnieją głównie dwa podstawowe typy przeciążeń, które są obsługiwane przez C ++.

C ++ pozwala nam pisać funkcje o tej samej nazwie, ale z różnicą w typach danych lub liczbie przekazywanych do niego argumentów, funkcja ta znana jest jako przeciążanie funkcji w C ++. Ta funkcja umożliwia programistom zdefiniowanie funkcji o tej samej nazwie w tym samym zakresie. Przy tej samej nazwie funkcje reprezentują tę samą funkcjonalność, umożliwiając w ten sposób osiągnięcie polimorfizmu w czasie kompilacji. Przeciążenie funkcji ma jedną zaletę, ponieważ poprawia czytelność kodu.

W C ++ dostępna jest kolejna funkcja, która pozwala na nowo zdefiniować istniejącą funkcjonalność wbudowanych operatorów, znaną jako przeciążanie operatora . Ta funkcja umożliwia korzystanie z wbudowanych operatorów na typach zdefiniowanych przez użytkownika. Przeciążenie operatora upraszcza kod, zmieniając funkcjonalność zgodnie z wymaganiami użytkownika. W tym artykule skupimy się zarówno na przeciążeniu funkcji, jak i przeciążeniu operatora, zobaczymy jej szczegóły i sposób użycia w C ++.

Jak działa przeładowanie w C ++?

  • Przeciążenie funkcji: pozwala nam zdefiniować funkcję o tej samej nazwie, ale rozróżnia funkcje w zależności od rodzaju przekazywanych do nich parametrów lub liczby przekazywanych im parametrów. Tak więc wszystkie funkcje będą miały tę samą nazwę, ale będą miały albo inny typ danych, albo będą miały do ​​niego przypisaną inną liczbę parametrów. Po wywołaniu funkcji kompilator wybierze funkcję o pasującym typie parametru i liczbie argumentów. Teraz jego programiści mogą wybrać, którą funkcję wywołać zgodnie z wymaganiami. Mogą wybrać odpowiednią funkcję, przekazując parametry zgodnie z regułami.
  • Przeciążenie operatora: pozwala operatorom pracować dla typów danych zdefiniowanych przez użytkownika, tj. Klas. Istniejące operatory są przeciążone i mają moc działania na klasie i obiektach zdefiniowanych przez użytkownika. Przeciążenie operatora osiąga się poprzez zdefiniowanie funkcji o specjalnej nazwie. Funkcja będzie miała nazwę „operator”, a po niej symbol operatora. Możemy użyć symbolu operatora bezpośrednio na typie danych zdefiniowanym przez użytkownika i wykonać operację. Niezbędne działanie lub operacja są przez nas określone w tej specjalnej funkcji. Przez przeciążenie operatora możemy wykonywać operacje różnych typów na tym samym typie danych.

Rodzaje przeciążenia w C ++

Funkcja Przeciążenie można osiągnąć w każdym razie pod względem wykorzystania parametrów. Kiedy mówimy o użyciu parametrów, których dotyczy, typ parametrów lub ich liczba lub sekwencja parametrów. Tak więc funkcja calc (int x, float y) posiadająca parametry (int x, float y) różni się od funkcji zdefiniowanej jako calc (float x, int y), które mają różne parametry z innym typem danych.

Może istnieć wiele typów, w których można uzyskać przeciążenie funkcji. Zobaczmy prosty przykład przeciążenia funkcji w C ++.

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

Tutaj mamy klasę Display, która ma przeciążoną metodę wyświetlania. Metoda show zostanie wywołana w zależności od przekazanych jej argumentów.

Wynik:

Tylko wiadomość: Witamy

Wiadomość o identyfikatorze: 10 Wiadomość: Witamy

Przeciążenie operatora można uzyskać na prawie wszystkich wbudowanych typach danych dostępnych w C ++. Nie ma takich różnych rodzajów przeciążenia operatora, ale podejścia mogą być różne, które są wykorzystywane do osiągnięcia przeciążenia operatora. Operatory takie jak Unary, Binary, Relational, Assignment itp. Mogą być przeciążone w C ++.

Zobaczmy prosty przykład przeciążenia operatora ++. W tym przykładzie zamiast pierwotnego typu danych użyjemy operatora ++ na obiekcie klasy zdefiniowanym przez użytkownika.

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

Mamy więc obiekt, którego początkowa wysokość zostanie ustawiona na 80 i zostanie zwiększona o 5, gdy wywołamy nad nim operator ++.

Wynik:

Wysokość roweru wynosi: 80
Wysokość roweru wynosi: 85

Zasady przeciążania w C ++

Poniżej znajdują się różne reguły przeciążania C ++ w następujący sposób:

Zasady przeciążania funkcji

  • W przypadku przeciążenia funkcji funkcja musi się różnić pod względem typu danych, liczby lub sekwencji parametrów. Nie może różnić się po prostu ze względu na typ zwracanej funkcji.

Zasady przeciążania operatora

  • Przeciążone mogą być tylko wbudowane operatory, nowych operatorów nie można przeciążić.
  • Są cztery operatory, których nie można przeciążać . (wybór członka), :: (rozdzielczość zakresu), . * (wybór członka za pomocą wskaźnika do funkcji) i?: (operator trójskładnikowy).
  • Przeciążony operator będzie zawierał co najmniej jeden operand typu danych zdefiniowanego przez użytkownika.
  • Istnieją pewne operatory, których nie można przeciążić za pomocą funkcji przyjaciela, ale można je przeciążyć jako funkcję członka.

Wniosek

Przeciążenie w C ++ to wyjątkowa funkcja, która zapewnia nam wiele korzyści. Istnieją głównie dwa rodzaje przeciążenia, tj. Przeciążenie funkcji i przeciążenie operatora. Przeciążenie funkcji poprawia czytelność kodu, zachowując tę ​​samą nazwę dla tej samej akcji. Przeciążenie operatora pozwala na nowo zdefiniować istniejącą funkcjonalność operatorów, nadając im tym samym specjalne znaczenie. Oba są bardzo przydatne w programowaniu w C ++.

Polecane artykuły

Jest to przewodnik po przeciążaniu w C ++. Tutaj omawiamy jego działanie, zasady i dwa rodzaje przeciążenia w c ++, tj. Przeciążenie funkcji i przeciążenie operatora. Możesz także spojrzeć na następujący artykuł, aby dowiedzieć się więcej -

  1. Przeciążenie w PHP
  2. Kopiuj konstruktora w C ++
  3. Przeciążenie a zastąpienie
  4. Instrukcja Switch w C ++
  5. Przeciążenie w Javie
  6. Przeciążenie Pythona