c++ 运算符的重载

重载操作符
1 定义
类型 operaotr+(参数1 ,参数2)
 2 不能重载的操作符
   :: .*  ?:


3 重载操作符必须具有一个类类型的操作数
  用于内置类型的操作符,起含义不能改变
  int operator+(int,int)//error:内置类型的整形加法操作符不能改变


4 重载后操作符的优先级,结核性,操作数目不能改变
  ||,&&重载后不再具有短路求职特性


5 重载可定义为类的成员函数 或非成员函数


6 转换与类类型
  c++提供一种机制,一个类可以定义自己的转换,应用于其类类型的对象,例如A+1;
  可以定义A到int型的转换



#include<iostream>
using namespace std;
class Complex
{
private:
	int real;
	int virtu;
public:
	Complex()
	{
	};
	int GetReal() const;
	 int GetVirau() const ;
	friend  Complex  operator +(const Complex a,const Complex b);
	friend Complex  operator -(const Complex a,const Complex b);
	friend istream& operator >>(istream& in,Complex& s);
	friend ostream& operator<<(ostream& out,const Complex& s); 
	inline bool operator ==( const  Complex& b)  
	{
		if((real == b.GetReal()) && ( virtu == b.GetVirau()))
			return 1;
		else
			return 0;
	}
	inline bool operator !=(Complex b)
	{
		if((real != b.GetReal()) || ( virtu != b.GetVirau()))
			return 1;
		else
			return 0;

	}

};
 int Complex::GetReal() const
{
	return real;
}

 int Complex::GetVirau() const
{
	return virtu;
}
 Complex operator +(const Complex a,const Complex b)
{
	Complex c;
	c.real = a.real + b.virtu;
	c.virtu = a.virtu + b.virtu;
	return c;
}

Complex operator -(const Complex a,const Complex b)
{
	Complex c;
	c.real = a.real - b.real;
	c.virtu = a.virtu - b.virtu;
	return c;
}

istream& operator >>(istream& in,Complex& s)
{
   cout<<"please input the real";
	in>>s.real;
	cout<<"please input the virtu";
	in>>s.virtu;
	return in;
}

ostream& operator<<(ostream& out,const Complex& s)
{
	cout<<"实数为:"<<endl;
	out<<s.real<< "+"<<s.virtu <<"*"<<"i"<<endl;
	return out;

}



int main()
{
	Complex Complex1,Complex2;
	cin>>Complex1;
	cin>>Complex2;
	
	cout<<Complex1 + Complex2<<endl;
	cout<<Complex1 - Complex2<<endl;
	if(Complex1 != Complex2)
		cout<<"hello"<<endl;
	else
		cout<<"world"<<endl;


	return 0;
}





     

  转换函数必须是成员函数,不能定义返回类型,并且形参必须为空
  虽然转换函数不能定义返回类型,但每个转换函数必须返回一个值
  c++  primer 14章



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值