Grundlegende Regeln und Idiome der Operatorüberladung in C++
Hallo zusammen! Ich lerne seit etwa einem halben Jahr C++ und bin bei der Operatorüberladung durcheinandergekommen. Ich verstehe zwar die Syntax, aber ich stoße ständig auf Probleme.
Zum Beispiel habe ich versucht, eine einfache Klasse Vector2D für zweidimensionale Vektoren mit Überladung des +-Operators zu schreiben. Hier ist mein Code:
```cpp
class Vector2D {
public:
Vector2D(double x, double y) : x_(x), y_(y) {}
Vector2D operator+(const Vector2D& other) {
return Vector2D(x_ + other.x_, y_ + other.y_);
}
// Problem: Warum kann ich nicht 2.0 + v schreiben?
// Oder v1 + v2 + v3?
private:
double x_, y_;
};
```
Wenn ich versuche, `Vector2D v3 = 2.0 + v1;` zu verwenden, beschwert sich der Compiler. Außerdem bin ich mir nicht sicher, wie man Operatoren wie `<<` für die Ausgabe mit cout richtig überlädt und wann man eine Referenz zurückgeben soll und wann einen Wert.
Kann ich eine Zusammenfassung der grundlegenden Regeln und Idiome für die Operatorüberladung bekommen? Welche Operatoren können überladen werden und welche nicht? Wann sind friend-Funktionen nötig? Und wie macht man
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen