C++ 二元运算符重载
二元运算符需要两个参数,下面是二元运算符的实例。我们平常使用的加运算符( + )、减运算符( - )、乘运算符( * )和除运算符( / )都属于二元运算符。就像加(+)运算符。
下面的实例演示了如何重载加运算符( + )。类似地,您也可以尝试重载减运算符( - )和除运算符( / )。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <iostream> using namespace std; class Box { double length; double breadth; double height; public: double getVolume(void) { return length * breadth * height; } void setLength( double len ) { length = len; } void setBreadth( double bre ) { breadth = bre; } void setHeight( double hei ) { height = hei; } Box operator+(const Box& b) { Box box; box.length = this->length + b.length; box.breadth = this->breadth + b.breadth; box.height = this->height + b.height; return box; } };
int main( ) { Box Box1; Box Box2; Box Box3; double volume = 0.0; Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); volume = Box1.getVolume(); cout << "Volume of Box1 : " << volume <<endl; volume = Box2.getVolume(); cout << "Volume of Box2 : " << volume <<endl; Box3 = Box1 + Box2; volume = Box3.getVolume(); cout << "Volume of Box3 : " << volume <<endl; return 0; }
|
当上面的代码被编译和执行时,它会产生下列结果:
1 2 3
| Volume of Box1 : 210 Volume of Box2 : 1560 Volume of Box3 : 5400
|
非成员函数与类成员二元运算(友元函数)
当 2 个对象相加时是没有顺序要求的,但要重载 ‘+’让其与一个数字相加则有顺序要求,可以通过加一个友元函数使另一个顺序的输入合法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #include<iostream> using namespace std; class A { private: int a; public: A(); A(int n); A operator+(const A & obj); A operator+(const int b); friend A operator+(const int b, A obj); void display(); } ; A::A() { a=0; } A::A(int n) { a=n; } A A::operator +(const A& obj) { return this->a+obj.a; } A A::operator+(const int b) { return A(a+b); } A operator+(const int b, A obj) { return obj+b; } void A::display() { cout<<a<<endl; } int main () { A a1(1); A a2(2); A a3,a4,a5; a1.display(); a2.display(); int m=1; a3=a1+a2; a3.display(); a4=a1+m; a4.display(); a5=m+a1; a5.display(); }
|
输出结果: