加减(+、-)运算符重载 及 加减法交换律——有错

1、成员函数+、-运算符重载

①实现:

V operator+(const V &r)

{
    V A;
    int i;
    A.a = a + r.a;
    return A; // 当当对象的属性中含有指针时需要补充拷贝构造函数

}

②加减法交换律:在已重载+、-运算符的前提下

A、转换构造函数 : 非成员函数(友元函数)  建议最好使用友元

class RMB
{
	int y;
public:
	RMB(const RMB &r)
	{
		y = r.y;
	}
	RMB(int d = 0)
	{
		y = d;
	}
	friend RMB operator+(const RMB &left, const RMB &right)
	{
		RMB b;
		b.y = left.y + right.y;
		return b;
	}
	void print()
	{
		cout << "y = " << y << endl;
	}
};
int main()
{
	RMB a(2); // 显式转换
	RMB b = a + 2; // RMB + int
	b.print();


	b = 2 + b; // int + RMB
	b.print();
}

 
 

B、重载两个成员函数:编译错误?

#include <iostream>
using namespace std;
class rmb
{
	int a;
public:
	rmb(int a_val = 0)
	{
		a = a_val;
	}
	rmb(rmb &r)
	{
		a = r.a;
	}
	rmb operator+(const rmb &r, int c)
	{
		int x = r.a+c;
		rmb b(x);
		return b;
	}
	rmb operator+(int c, const rmb &r)
	{
		return r+c;
	}
	void print()
	{cout << a << endl;}
};
int main()
{
    rmb a;
	rmb b = a+1;
	b.print();
    return 0;
}

   

猜你喜欢

转载自blog.csdn.net/littlsecr/article/details/80713102
今日推荐