complex 类运算符重载

complex类的运算符重载,<< >>重载实验结果

//复数类
//complex类完成 ++ 运算符的重载,注意区分前缀和后缀,并对 >> 和 << 运算符进行重载,
class complex {
private:
	double Real,  Image;
public:
	//构造函数
	complex() {
		Real = 0;
		Image = 0;
	}
	complex(double real, double image) {
		Real = real;
		Image = image;
	}
	
	void display() {
		if (Image >= 0) {
			cout << Real << "+" << Image << "i" << endl;
		}
		else cout << Real << Image << "i" << endl;
	}
	
	//运算符重载 + - *  ++ --
	complex operator + (const complex Right) {
		Real += Right.Real;
		Image += Right.Image;
		return complex(Real,Image);
	}
	complex operator + (const  double Right) {
		Real += Right;
		return *this;
	}
	complex operator - (const complex Right) {
	    Real -= Right.Real;
		Image -= Right.Image;
		return *this;
	}
	complex operator - (const  double Right) {
		Real -= Right;
		return *this;
	}
	complex operator * (const complex Right) {
		Real = Real * Right.Real - Image * Right.Image;
		Image = Real * Right.Image + Image * Right.Image;
		return *this;
	}
	complex operator * (const double Right) {
		Real *= Right;
		Image *= Right;
		return *this;
	}
	
	complex operator++() {
		Real++;
		Image++;
		return *this;
	}
	complex operator++(int) {
		complex old = *this;
		Real++;
		Image++;
		return old;
	}
	complex operator--() {
		Real--;
		Image--;
		return *this;
	}
	complex operator--(int) {
		complex old = *this;
		Real--;
		Image--;
		return old;
	}

	friend istream& operator>> (istream& in, complex& c);
	friend ostream& operator<< (ostream& out, complex& c);
};
// << >> 重载
istream& operator>> (istream &in,complex &c) {
	cout << "输入实部,虚部:";
	in >> c.Real >> c.Image;
	return in;
}
ostream& operator<< (ostream& out, complex& c) {
	out << c.Real << "," << c.Image << endl;
	return out;
}

//把complex类中的实部和虚部修改后指针变量,构造函数中需要先申请空间再使用;
//析构函数需要释放申请的空间。请完成赋值运算符重载及拷贝构造函数重载。
class complex {
private:
	double *Real, *Image;
public:
	complex(){
		Real = new double(0);
		Image = new double(0);
	}
	complex(double real ,double image ){
		Real = new double(real);
		Image = new double(image);
	}
	complex(complex &Right) {     //拷贝复制函数
		Real = new double(*(Right.Real));
		Image = new double(*(Right.Image));
	}
	~complex() {
		delete Real, Image;
	}

	void display() {
		cout << "(" << *Real << "," << *Image << ")" << endl;
	}
	complex operator + (const complex Right) {
		*Real += *(Right.Real);
		*Image += *(Right.Image);
		return *this;
	}
	complex operator + (const  double Right) {
		*Real += Right;
		return *this;
	}
	complex operator - (const complex Right) {
		*Real -= *(Right.Real);
		*Image -= *(Right.Image);
		return *this;
	}
	complex operator - (const  double Right) {
		*Real -= Right;
		return *this;
	}
	complex operator * (const complex Right) {
		*Real = *Real * *(Right.Real) - *Image * *(Right.Image);
		*Image = *Real * *(Right.Image) + *Image * *(Right.Image);
		return *this;
	}
	complex operator * (const  double Right) {
		*Real *= Right;
		*Image *= Right;
		return *this;
	}
	complex& operator =(const complex Right) {
		Real = new double( *(Right.Real));
		Image =new double( *(Right.Image));
		return *this;
	}

};

你可能感兴趣的:(complex 类运算符重载)