下面的实例使用成员函数演示了运算符重载的概念。在这里,对象作为参数进行传递,对象的属性使用 this 运算符进行访问,如下所示:
实例
#include<iostream>usingnamespacestd; classBox{ public: doublegetVolume(void) { returnlength * breadth * height; } voidsetLength(doublelen) { length = len; } voidsetBreadth(doublebre) { breadth = bre; } voidsetHeight(doublehei) { height = hei; } // 重载 + 运算符,用于把两个 Box 对象相加 Boxoperator+(constBox& b) { Boxbox; box.length = this->length + b.length; box.breadth = this->breadth + b.breadth; box.height = this->height + b.height; returnbox; } private: doublelength; // 长度 doublebreadth; // 宽度 doubleheight; // 高度};// 程序的主函数intmain(){ BoxBox1; // 声明 Box1,类型为 Box BoxBox2; // 声明 Box2,类型为 Box BoxBox3; // 声明 Box3,类型为 Box doublevolume = 0.0; // 把体积存储在该变量中 // Box1 详述 Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // Box2 详述 Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); // Box1 的体积 volume = Box1.getVolume(); cout << "Volume of Box1 : " << volume <<endl; // Box2 的体积 volume = Box2.getVolume(); cout << "Volume of Box2 : " << volume <<endl; // 把两个对象相加,得到 Box3 Box3 = Box1 + Box2; // Box3 的体积 volume = Box3.getVolume(); cout << "Volume of Box3 : " << volume <<endl; return0;}
当上面的代码被编译和执行时,它会产生下列结果:
Volume of Box1:210
Volume of Box2:1560
Volume of Box3:5400