Cześć,
mam pytanie dotyczące wartości zwracanej przy przeciążaniu operatora dodawania w C++. Proszę o wyrozumiałość, zapoznałem się z teorią ale jakoś w odniesieniu do mojego problemu nie zdało to egzaminu...
Przeciążając operator musimy podać typ wartości zwracanej, słowo kluczowe operator, znak jaki będziemy przeciążać no i argumenty wraz z ich typami.
Typ wartości zwracanej w przypadku przeciążania jakichś operatorów operujących na zmiennych będących polami klasy będzie nosił nazwę tej klasy ->
Przykład:
class zespolona
{
private:
double Rz, Ur;
public:
zespolona(): Rz(0.0), Ur(0.0){}
zespolona(double Rz, double Ur): Rz(Rz), Ur(Ur){}
friend zespolona operator+(const zespolona &, const zespolona &);
double getRz() const { return Rz }
double getUr() const { return Ur }
};
zespolona operator+(const zespolona &first, const zespolona &second)
{
double i,r;
r = first.getRz() + second.getRz();
i = first.getUr() + second.getUr();
** return zespolona(r,i)**
}
};
Nie jestem w stanie zrozumieć co dokładnie zwraca ten operator. Tj. jak mam nazwać wartość zwracaną przez przeciążony operator, to jest obiekt klasy zespolona czy konstruktor ?
Semantyka wygląda na funkcję, metodę klasy zespolona ale skąd ta funkcja wie, na podstawie jakiej deklaracji wie że ma **przyjmować dokładnie dwa argumenty typu double **, przyjmować i przechowywać te dwa argumenty.
Czy to wynika z deklaracji konstruktora w klasie zespolona ? ->
zespolona(double Rz, double Ur): Rz(Rz), Ur(Ur){}
dodanie znacznika <code class="cpp"> - furious programming