Przeciążanie operatorów
Z Wikipedii, wolnej encyklopedii
Z Wikipedii, wolnej encyklopedii
Przeciążanie operatorów (ang. operator overloading) lub przeładowanie operatorów – rodzaj polimorfizmu występującego w niektórych językach programowania, polegający na tym, że operator może mieć różne implementacje w zależności od typów użytych argumentów (operandów).
Przeciążanie i definiowanie |
Przeciążanie | Brak |
---|---|---|
Przeciążanie operatorów to typowy lukier składniowy. Potencjalnie znacznie poprawia czytelność kodu i umożliwia zdefiniowanie większej części biblioteki standardowej na poziomie języka, bez uciekania się do trików. Z drugiej strony, ta technika programistyczna może spowodować powstawanie niejasnych konstrukcji, gdzie operatory wykonują kompletnie różne czynności w zależności od ich operandów.
Na przykład wyrażenie w C++: a << 1
normalnie oznacza przesunięcie bitowe liczby a w lewo. Jeśli a jest strumieniem, oznacza to przesłanie liczby 1 do tego strumienia. Jak jednak interpretować ten fragment gdy a jest oknem? Z tego powodu zalecane jest, aby przeciążać tylko te operatory, których znaczenia łatwo się domyślić, gdyż mają swój odpowiednik w matematyce, fizyce itp.
Inny sposób nazewnictwa – objaśnienia z książki „Symfonia C++ Standard”:
Pisząc w Niemczech tę książkę nie wiedziałem, że pewien polski autor, przetłumaczył termin overloaded – na polski jako przeciążony. […] Warto dodać, że na niemiecki przetłumaczono ten termin jako überladen (przeładować), a nie überlasten (przeciążyć), we francuskim przetłumaczono na recharger (naładować od nowa), na włoski – sovraccaricare, a słowo to nie oznacza wcale czegoś, co jest ciężkie. […] Te fakty potwierdzają słuszność tłumaczenia przeładować.
W kompilatorze Free Pascal można przeciążać operatory w następujący sposób:
operator +(A, B: TMojaKlasa) R: TMojaKlasa;
Begin
// R od Result
R := (A.Wartosc1 + B.Wartosc1) + (A.Wartosc2 + B.Wartosc2); // Wzięte w nawiasy ze względów estetycznych.
End;
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.