C++运算符重载

C++运算符重载,第1张

运算符重载:
    运算符重载的一般格式:
    返回类型 operator运算符 (参数列表)
    {
        重载函数体;
    }
    5个运算符不能重载: 成员运算符. 成员指针运算符* 域运算符:: 条件运算符?: 空间计算运算符 sizeof
    运算符重载的规则:
            不允许定义新的运算符
            不能改变该运算符 *** 作对象的个数
            不能改变该运算符的优先级别和结合性
            应注意符合实际的需要,重载的功能应该与运算符原有的功能相似,避免没有目的的使用运算符重载 
    运算符重载为友元函数,声明的一般形式为:
        friend 返回类型 operator运算符 (参数列表)

运算符重载为成员函数,声明的一般形式为:

返回类型 operator运算符 (参数列表)

代码实现:

#include
using namespace std;
class Complex
{
	public:
		Complex(int real,int image)
		{//带参构造函数
			this->real=real;
			this->image=image;
		};
		Complex()
		{//无参构造函数
			
		};
        	//	作为友元函数方式实现 
	    friend Complex operator+(const Complex &c1,const Complex &c2)
		{
			Complex c3;
			c3.real=c1.real+c2.real;
			c3.image=c1.image+c2.image;
			return c3;
		};
	    Complex	operator+(const Complex &c2)
	    {
	    	Complex c;
	    	c.real=this->real+c2.real;
	    	c.image=this->image+c2.image;
	    	return c;
		};
		//输出<<运算符重载
		friend ostream &operator<<(ostream &cout,const Complex &c) 
		{
			cout<>运算符重载
		friend istream &operator>>(istream &cin,Complex &c)
		{
			cin>>c.real>>c.image;
			return cin;
		 }; 
		 //实现前置自增运算符重载 
		 Complex operator++()
		 {
		 	this->real++;
			this->image++; 
			return *this;
		 };
		 //实现后置自增运算符重载 
		 Complex operator++(int)
		 {
		 	Complex temp=*this;
		 	this->real++;
			this->image++; 
			return temp;
		 }; 
		 //采用成员函数形式,实现赋值运算符重载    
		 Complex operator=(const Complex &c)
		 {
		 	Complex c1;
		 	c1.real=c.real;
		 	c1.image=c.image;
		 	return c;
		  } 
          	//	作为友元函数方式实现 
	    friend Complex operator+(const Complex &c1,const Complex &c2)
		{
			Complex c3;
			c3.real=c1.real+c2.real;
			c3.image=c1.image+c2.image;
			return c3;
		};
	    Complex	operator+(const Complex &c2)
	    {
	    	Complex c;
	    	c.real=this->real+c2.real;
	    	c.image=this->image+c2.image;
	    	return c;
		};
		//输出<<运算符重载
		friend ostream &operator<<(ostream &cout,const Complex &c) 
		{
			cout<>运算符重载
		friend istream &operator>>(istream &cin,Complex &c)
		{
			cin>>c.real>>c.image;
			return cin;
		 }; 
		 //实现前置自增运算符重载 
		 Complex operator++()
		 {
		 	this->real++;
			this->image++; 
			return *this;
		 };
		 //实现后置自增运算符重载 
		 Complex operator++(int)
		 {
		 	Complex temp=*this;
		 	this->real++;
			this->image++; 
			return temp;
		 }; 
		 //采用成员函数形式,实现赋值运算符重载    
		 Complex operator=(const Complex &c)
		 {
		 	Complex c1;
		 	c1.real=c.real;
		 	c1.image=c.image;
		 	return c;
		  };
         //作为友元函数方式实现 
		friend bool operator==(const Complex &c1,const Complex &c2)
		{
			if(c1.real==c2.real&&c1.image==c2.image)
			{
				return true;
			}
			return false;
		};
		//成员函数重载方式实现 
		bool operator==(const Complex &c2)
		{
			if(this->real==c2.real&&this->image==c2.image)
			{
				return true;
			}
			return false;
		}; 
		
	 private:
		int	image;
		int real;
	
}; 
    main()
    {//在主函数进行测试
	    Complex c1(2,-9),c2(2,6);
	    Complex c3;
	    c3=c1+c2;//隐式调用
	    c3=operator+(c1,c2);//友元函数的显式调用 
	    c3=c1.operator+(c2);//成员函数重载的显式调用 
	    cin>>c3;
	    cout<

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1352470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-14
下一篇 2022-06-14

发表评论

登录后才能评论

评论列表(0条)