Я пытаюсь понять идею перегрузки оператора, я догадываюсь о том, когда все это собирается, и я мог бы повесить его, но ...Оператор перегружает комплексные номера - дополнительная функция
Я изо всех сил пытаюсь понять часть кода, в которой используется оператор +, который был перегружен, так что он будет добавлять сложные номера, код довольно прост.
#include <iostream>
using namespace std;
class complex {
protected:
double Re, Im;
public:
complex() : Re(0.0), Im(0.0) {}
complex(double Re, double Im) : Re(Re), Im(Im) {}
double getRe() const { return Re; }
double getIm() const { return Im; }
friend complex operator+(const complex&, const complex&);
friend ostream& operator<<(ostream&, const complex&);
};
complex operator+(const complex& a, const complex& b) {
double r, i;
r = a.getRe() + b.getRe();
i = a.getIm() + b.getIm();
**return complex(r, i);** // *** CAN ANYONE EXPLAIN THIS BIT ? ***
}
ostream& operator<<(ostream& out, const complex &a) {
out << "(" << a.getRe() << ", " << a.getIm() << ")" << endl;
return out;
}
int main(void) {
complex a(1,2), b(3,4), c;
c = a+b;
cout << c << endl;
}
Я не могу понять, что именно линия 23 делает:
return complex(r, i);
Перегруженный оператор добавления должен возвращать некоторое значение, так как было выяснено, что должно быть значение сложный тип.
Чтобы он выглядел как объявленный в сложном классе, , но имеет ли он какое-то отношение к конструктору?
Я имею в виду, как теперь будет компилятор, как выглядит тип «сложный», поскольку это имя класса, связано ли это с конструктором класса?
Создают ли конструкторы значения, являющиеся типом класса?
Например, у нас есть класс холодной собаки.
значение, которое будет тип класса называется собака, будет выглядеть так:
значение собаки
ли конструктор в классе собаки определяет определение стоимости, как это выглядит, какая информация он хранит?
- Как я могу перегрузить оператор ostream >> (cin), чтобы пользователь мог указать собственные значения комплексных чисел?
Спасибо!
Вы должны спросить * *один вопрос. –
Вы знаете, что у C++ уже есть [сложные номера в стандартной библиотеке] (http://en.cppreference.com/w/cpp/numeric/complex)? –
Что касается * one * вашей проблемы, вы не видите никакого сходства между «вызовом» 'complex (r, i)' и одним из конструкторов? –