Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C++ Overloading: Funktionen & Operatoren erklärt

C++ erlaubt mehrere Definitionen für denselben Funktionsnamen oder Operator im selben Scope – Funktionsüberladung und Operatorüberladung.

Eine überladene Deklaration hat denselben Namen wie eine vorherige, aber unterschiedliche Parameter (Typ/Anzahl). Rückgabetyp allein reicht nicht für Überladung.

Bei Aufruf wählt Compiler die passendste Definition basierend auf Argumenttypen – Overload Resolution.

Funktionsüberladung

Mehrere Definitionen desselben Funktionsnamens im selben Scope. Unterscheidung über Typen/Anzahl der Parameter. Nicht über Rückgabetyp allein.

#include <iostream>
using namespace std;
class printData {
public:
    void print(int i) { cout << "Printing int: " << i << endl; }
    void print(double f) { cout << "Printing float: " << f << endl; }
    void print(char* c) { cout << "Printing character: " << c << endl; }
};
int main() {
    printData pd;
    pd.print(5);
    pd.print(500.263);
    pd.print("Hello C++");
    return 0;
}

Ausgabe:

Printing int: 5
Printing float: 500.263
Printing character: Hello C++

Operatorüberladung

Die meisten eingebauten Operatoren können für benutzerdefinierte Typen neu definiert werden. Überladene Operatoren sind Funktionen mit speziellen Namen: operator + Symbol (z. B. operator+). Haben Rückgabetyp und Parameterliste.

Box operator+(const Box&);  // Member-Funktion: this + Argument

Als Non-Member-Funktion zwei Argumente:

Box operator+(const Box&, const Box&);

Beispiel: Box-Addition

#include <iostream>
using namespace std;
class Box {
public:
    double getVolume() { return length * breadth * height; }
    void setLength(double len) { length = len; }
    void setBreadth(double bre) { breadth = bre; }
    void setHeight(double hei) { height = hei; }
    // + Operator überladen
    Box operator+(const Box& b) {
        Box box;
        box.length = this->length + b.length;
        box.breadth = this->breadth + b.breadth;
        box.height = this->height + b.height;
        return box;
    }
private:
    double length, breadth, height;
};
int main() {
    Box Box1, Box2, Box3;
    Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0);
    Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0);
    cout << "Volume Box1: " << Box1.getVolume() << endl;  // 210
    cout << "Volume Box2: " << Box2.getVolume() << endl;  // 1560
    Box3 = Box1 + Box2;  // Operator+ Aufruf
    cout << "Volume Box3: " << Box3.getVolume() << endl;  // 5400
    return 0;
}

Überladbare / Nicht überladbare Operatoren

Überladbar:

+-*/%^
&|~!,=
<><=>=++--
<<>>==!=&&||
+=-=/=%=^=&=
|=*=<<=>>=[]()
->->*newnew[]deletedelete[]

NICHT überladbar:

::.*.?:

Operatorüberladungs-Beispiele (Übersicht)

Nr.Beispiel
1Unäre Operatoren
2Binäre Operatoren
3Relationale Operatoren
4Ein-/Ausgabe-Operatoren (<<, >>)
5++ und --
6Zuweisungsoperatoren
7Funktionsaufruf ()
8Subscript []
9Member Access ->

C Sprache

  1. Arrays an Funktionen in C++ übergeben: Ein praktischer Leitfaden
  2. C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
  3. C++ Speicherverwaltung meistern: Experten-Einsatz von new und delete
  4. C++ Vererbung: Public, Protected & Private erklärt
  5. C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
  6. C-Structs: Übergeben, Zurückgeben & Referenz-Handling meistern
  7. Operator Overloading in Python meistern: Ein praktischer Leitfaden
  8. C++ Operatoren erklärt: Typen, Beispiele und Beispielprogramme
  9. C++ Operator‑Overloading: Praktischer Leitfaden mit Code‑Beispielen
  10. C++-Funktionen erklärt: Mit praktischen Code-Beispielen