Jak implementovat přetížení operátora v c ++?



V tomto článku se podíváme na další objektově orientovaný koncept, který usnadňuje manipulaci operátora. Učili bychom se přetížení operátorů v C ++.

V tomto článku prozkoumáme ještě další objektově orientovaný koncept, který usnadňuje manipulaci operátora. To znamená, že bychom se dostali do podrobností o Provozovateli Přetížení v C ++ . V tomto článku se budeme zabývat následujícími ukazateli,

Pojďme tedy začít s tímto článkem o přetížení operátorů v C ++.





Přetížení v C ++

Pokud vytvoříme dva nebo více členů stejné třídy se stejným názvem, ale odlišným počtem nebo typem parametru, je to známé jako C ++ přetížení.



V C ++ můžeme přetížit:

java je vs má a
  • metody
  • konstruktéři
  • indexované vlastnosti

Je to proto, že tito členové mají pouze parametry.

Pokračujeme tímto článkem o přetížení operátora v C ++.



Typy přetížení v C ++

  • Přetížení funkce
  • Přetížení obsluhy

Přetížení - přetížení operátora v C ++ - Edureka

Pokračujeme tímto článkem o přetížení operátora v C ++.

Proč se používá přetížení operátora?

Programy v C ++ lze psát bez znalosti přetížení operátora. Také pak je obsluha operátora hluboce využívána programátory, aby byl program intuitivní. Například,

Můžeme nahradit kód jako:

výpočet = přidat (dělit (a, b), vynásobit (a, b))

Pro rovnici

výpočet = (a / b) + (a * b)

Přetížení operátoru poskytuje jednoduchý a snadný způsob vývoje nových definic pro většinu operátorů v C ++. S dostatečnými znalostmi můžeme téměř vytvořit nový vlastní jazyk kreativním využitím technik přetížení funkcí a operátorů. V C ++ můžeme přetížit všechny operátory kromě následujících:
● Operátor oboru (: :)
● Operátor velikosti (Sizeof)
● selektor členů (.)
● volič ukazatele člena (*)
● ternární operátor (? :)

Syntaxe přetížení operátora

návratový typ název_třídy:: operátor op (seznam argumentů) {// tělo funkce}

Kde návratový typ je typ hodnoty vrácené funkcí. název_třídy je název třídy.

Pokračujeme tímto článkem o přetížení operátora v C ++.

Implementace přetížení operátora v C ++

Funkce operátora musí být buď nestatická (členská funkce), nebo kamarádská funkce, aby se přetížila. Funkce přetížení operátoru může být použita na členské funkci, pokud je levý operand objektem této třídy, ale pokud je levý operand odlišný, musí být funkce přetížení operátoru definována jako nečlenská funkce.
Funkce přetížení operátora může být vytvořena jako přátelská funkce, pokud vyžaduje přístup k soukromým a chráněným členům třídy. Například operátor op je funkce operátora, kde op je přetížený operátor a operátor je klíčové slovo. Přetížení operátora lze dosáhnout implementací funkce, která může být buď členská funkce, nečlenská funkce nebo funkce přítele.

Jaký je rozdíl mezi funkcemi operátora a normálními funkcemi?

Funkce operátora jsou stejné jako normální funkce. Jediný rozdíl je v tom, že název funkce operátoru je vždy klíčové slovo operátor následované symbolem operátoru a funkce operátoru jsou volány, když je použit odpovídající operátor.

Pokračujeme tímto článkem o přetížení operátora v C ++.

Druhy přístupů k přetížení

Přetížení operátora lze provést pomocí tří přístupů

  • Přetížení unárního operátora.
  • Přetížení binárního operátoru.
  • Přetížení binárního operátoru pomocí funkce přítele.

Pokračujeme tímto článkem o přetížení operátora v C ++.

třída pythonu __init__

Přetížení unárního operátora

Uvažujme unární operátor „-“. Mínusový operátor, pokud je použit jako unární, vyžaduje pouze jeden operand. Víme, že tento operátor změní znaménko operandu, když se použije na základní datovou proměnnou. Podívejme se, jak přetížit tento operátor, aby jej bylo možné použít na objekt v podstatě stejným způsobem, jakým se aplikuje na proměnnou int nebo float. Unární minus při použití na objekt by mělo snížit každou z jeho datových položek.

Příklad:

#include using namespace std class Height {public: // Member Objects int feet, inch // Constructor to initialize the object's value Height (int f, int i) {feet = f inch = i} // Operátor přetížení (-) na provést dekrementaci // operace objektu Výška void operator- () {stopy-- palce-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Výstup:

Vysvětlení:
Ve výše uvedeném příkladu přetížíme unární operátor „-“, který provede dekrement ve dvou proměnných třídy Height. Konstruktoru předáme dva parametry a jejich hodnoty uložíme do proměnné stopy a palce. Poté definujeme funkci přetížení operátoru (void operator- ()
), ve kterém jsou dvě proměnné sníženy o jednu pozici.
Když napíšeme -h1, zavolá funkci přetížení operátoru a sníží hodnoty předané konstruktoru.

Pokračujeme tímto článkem o přetížení operátora v C ++.

Přetížení binárního operátora

Jedná se o přetížení operátora operujícího na dvou operandech. Vezměme si stejný příklad třídy Výška, ale tentokrát přidejte dva objekty výšky h1 a h2.

Příklad:

#include using namespace std class Height {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Operátor přetížení (+) k provedení přidání // dvou vzdálených objektů pomocí binárního operátoru Height operátor + (Height & d2) // Volání odkazem {// Vytvoření objektu pro návrat Výška h3 // Provede přidání stop a palců h3.feet = nohy + d2.feet h3. inch = inch + d2.inch // Vrátit výsledný objekt return h3}} int main () {Výška h1 (3, 7) Výška h2 (6, 1) Výška h3 // Použít přetížený operátor h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Výstup:

Vysvětlení:
Operátor výšky + (Výška & h2), zde returns_type funkce je třída Výška, takže vrací objekt h3 třídy Výška. Na řádku h3 = h1 + h2 volá h1 operátorskou funkci svých třídních objektů a bere h2 jako parametr, pak použijeme h3.feet = nohy + d2.feet a h3.inch = palec + d2.inch, který ukládá součet hodnot proměnných stop a palců v proměnných přidružených k objektu h3.
Když příkaz „h3 = h1 + h2“ vyvolá funkci přetíženou operátorem, objekt h1 převzal odpovědnost za vyvolání funkce a h2 hraje roli argumentu, který je předán funkci. Výše uvedený příkaz vyvolání je ekvivalentní h3 = h1.operator + (h2), takže k datovému členu h2 se přistupuje přímo a k datovému členu h2 (který se předává jako argument) se přistupuje pomocí operátoru tečky.

Pravidla pro přetížení operátora

  • Lze přetížit pouze stávající operátory a nelze přetížit nové operátory
  • Přetížený operátor musí obsahovat alespoň jeden operand uživatelem definovaného datového typu.
  • K přetížení určitých operátorů nepoužíváme funkci přítele. Členské funkce však lze použít k přetížení těchto operátorů.
  • Když jsou unární operátoři přetíženi prostřednictvím členské funkce, nepřijmou žádné explicitní argumenty, ale pokud jsou přetíženi funkcí přítele, vezmou jeden argument.
  • Když jsou binární operátory přetíženy prostřednictvím členské funkce, přijmou jeden explicitní argument, a pokud jsou přetíženy prostřednictvím funkce přítele, vezmou dva explicitní argumenty.

Tak jsme dospěli ke konci tohoto článku o „Přetížení operátoru v C ++“. Pokud se chcete dozvědět více, podívejte se na Java Training by Edureka, důvěryhodná online vzdělávací společnost. Edureka Kurz je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java spolu s různými rámci Java, jako je Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.