C++运算符重载
1. 作为类成员函数实现
//.h文件声明
Shape operator+(const Shape &shape);
//.cpp文件实现
Shape Shape:: operator+(const Shape &shape)
{
Shape shapeT;
shapeT.length_ = this->length_ + shape.length_;
shapeT.width_ = this->width_ + shape.width_;
shapeT.height_ = this->height_ + shape.height_;
return shapeT;
}
2. 在全局函数实现
.h文件中声明全局的运算符重载函数
Shape operator-(const Shape&shape1, const Shape&shape2);
//类中添加为友元函数
friend Shape operator-(const Shape&shape1, const Shape&shape2);
//.cpp文件实现
Shape operator-(const Shape&shape1, const Shape&shape2)
{
Shape shapeT;
shapeT.length_ = shape1.length_ -shape2.length_;
shapeT.width_ = shape1.width_ -shape2.width_;
shapeT.height_ = shape1.height_ - shape2.height_;
return shapeT;
}
3.在main函数中使用
Shape shape1(2, 2, 2);
Shape shape2(3, 3, 3);
cout << "shape1的体积为:" << shape1.getVolume() << endl;
cout << "shape2的体积为:" << shape2.getVolume() << endl;
Shape shapeAdd = shape1 + shape2;
Shape shapeSub = shape2 - shape1;
cout << "shape1+shape2的体积为:" << shapeAdd.getVolume() << endl;
cout << "shape2-shape1的体积为:" << shapeSub.getVolume() << endl;
4运行效果
5.总结,类成员函数实现相比较全局函数实现参数要少一个,单目和双目运算符参数分别为0,1个全局函数分别是1,2个。