Перегрузка оператора != - C (СИ)
Формулировка задачи:
помогите разобраться написал оператор перегрузки != но не могу сравнивать их в if вот код
#include<iostream.h> #include <stdio.h> #include "time_1.h" #include<time.h> #include<windows.h> char* Rus (const char* text); Complex::Complex(double r,double i) { real=r; imaginary=i; } Complex Complex::operator +(const Complex &operand2) const { Complex sum; sum.real=real+operand2.real; sum.imaginary=imaginary+operand2.imaginary; return sum; } Complex& Complex::operator=(const Complex &right) { real=right.real; imaginary=right.imaginary; return *this; } Complex Complex::operator-(const Complex &operand2) const { Complex diff; diff.real=real-operand2.real; diff.imaginary=imaginary-operand2.imaginary; return diff; } ostream &operator<<(ostream &output,const Complex &s) { output<<'('<<s.real<<", "<<s.imaginary<<')'<<endl; return output; } istream &operator>>(istream &input, Complex &s) { cout<<Rus("Введите целую часть числа:" )<<endl; input>>s.real; cout<<Rus("Введите мнимую часть ")<<endl; input>>s.imaginary; return input; } Complex Complex::operator *(Complex &s) { Complex ymno; ymno.real=real*s.real; ymno.imaginary=imaginary*s.imaginary; return ymno; } /****************************************************сравнение двух числео*///// Complex Complex::operator==(const Complex &operand2) const { if (operand2.real==real && operand2.imaginary==imaginary) return true; return 0; } Complex Complex::operator!=(const Complex &operand2) const { if (operand2.real!=real && operand2.imaginary!=imaginary) cout<<Rus("два числа неравны"); return 0; } main() { Complex x,y; cin>>x; cin>>y; if (x!=y)/***вот тут не хочет if проходить выбивает ошибку если просто написать x!=y; то все работатет*// z=1; return 0; } char bufRus[256]; char* Rus(const char* text) { CharToOem(text,bufRus); return bufRus; }
Решение задачи: «Перегрузка оператора !=»
textual
Листинг программы
bool Complex::operator==(const Complex &right) { return( real==right.real && imaginary==right.imaginary ); } bool Complex::operator1=!(const Complex &right) { return( !operator==(right) ); }
Объяснение кода листинга программы
В представленном коде реализована перегрузка оператора !=
для класса Complex
.
Список действий в коде:
- В функции
operator1!=
, используется выражение!operator==(right)
, гдеright
- это константа, переданная в качестве аргумента. - Функция
operator==
проверяет равенство двух комплексных чисел. Она возвращаетtrue
, если вещественная и мнимая части комплексных чисел равны, иfalse
в противном случае. - Функция
operator1!=
возвращаетtrue
, если комплексные числа не равны, иfalse
, если они равны. Таким образом, в результате выполнения кода, будет реализована перегрузка оператора!=
для классаComplex
, которая будет проверять неравенство двух комплексных чисел.