C++ 中的运算符重载

发布于 2018-03-01  1.49k 次阅读


c++中正常的一个类创建

#include 
using namespace std; 
class Box // 创建一个Box类 
{
	public:
		double len;	// Box类的属性 
};
int main()
{
	Box box1, box2; // 声明box1, box2类型为Box 
	cin >> box1.len >> box2.len;
	cout << box1.len << ' '<< box2.len << endl;
}

这时候在声明一个box3类型为Box,使得box3 = box1 + box2可以正常运行所以需要重载'+'号

'+'号的重载代码

#include 
using namespace std; 
class Box // 创建一个Box类 
{
	public:
		double len;	// Box类的属性 
	Box operator + (const Box& b) // 重载'+'其他运算符类似 
	{
		Box box;
		box.len = this -> len + b.len;
		return box;
	}
};
/*结构体
struct node
{
	int len;
	node operator + (const node& b) // 结构体运算符重载
	{
		node x;
		x.len = this -> len + b.len;
		return x;
	}	
};
*/
int main()
{
	Box box1, box2; // 声明box1, box2类型为Box 
	Box box3; // 新声明的box3类型为Box 
	cin >> box1.len >> box2.len;
	box3 = box1 + box2; // '+'号重载后不会报错 
	cout << box3.len << endl;
}