C++ study notes-operator overloading

Operator overload definition form:
<function type> <class name> :: operator <operator> (<parameter list>)
{ function body { Note: Operators that cannot be overloaded include "::", ".", ". *", "?:"


#include<iostream>
using namespace std;

class Complex{
    
    
	public:
		double real, imag;
	public:
		Complex(double r=0, double i=0){
    
    real=r;imag=i;}
		double Real(){
    
    return real;}
		double Imag(){
    
    return imag;}
		Complex operator +(Complex&);
		Complex operator +(double);
		bool operator ==(Complex);
		~Complex(){
    
    }
};

Complex Complex::operator +(Complex &c){
    
    
	Complex temp;
	temp.real=real+c.real;
	temp.imag=imag+c.imag;
	return temp;
}

Complex Complex::operator +(double d){
    
    
	Complex temp;
	temp.real=real+d;
	temp.imag=imag;
	return temp;
}

bool Complex::operator ==(Complex c){
    
    
	if(real==c.real && imag==c.imag) return true;
	else return false;
}

int main(){
    
    
	Complex c1(3,4),c2(5,6),c3;
	cout<<"c1="<<c1.real<<"+j"<<c1.imag<<endl;
	cout<<"c2="<<c2.real<<"+j"<<c2.imag<<endl;
	c3=c1+c2;
	cout<<"c1+c2="<<c3.real<<"+j"<<c3.imag<<endl;
	c3=c1+6.5;
	cout<<"c1+6.5="<<c3.real<<"+j"<<c3.imag<<endl;
	if(c1==c2) cout<<"两个复数相等"<<endl;
	else cout<<"两个复数不相等"<<endl;
	return 0; 
}

Operation result:
c1=3+j4
c2=5+j6
c1+c2=8+j10
c1+6.5=9.5+j4 The
two complex numbers are not equal

Guess you like

Origin blog.csdn.net/wxsy024680/article/details/113728436