像+、-号进行运算符重载,过程类似,见以下代码示例:
#include<iostream>
#include<string>
using namespace std;class number1 {friend number1 operator+(number1& one, number1& two);
public:number1():msg1(0), msg2(1){}number1(int msg1, int msg2) {this->msg1 = msg1;this->msg2 = msg2;}void Print() {cout << msg1 << "+" << msg2 << endl;}
private:int msg1;int msg2;
};number1 operator+(number1& one, number1& two) {number1 num1;num1.msg1 = one.msg1 + two.msg1;num1.msg2 = one.msg2 + two.msg2;return num1;
}int main() {number1 a(1, 2);number1 b(2, 3);number1 c = a + b;c.Print();return 0;
}
左移运算符一般是这种样式:对象为e的话,cout.operator<<(e),成员函数的重载是这样的:
e.opeerator<<(cout),可以作为当前类的成员函数,这样就可以实现对象的输出,见以下代码示例
#include<iostream>
#include<string>
using namespace std;class number1 {friend number1 operator+(number1& one, number1& two);friend ostream& operator<<(ostream& cout, number1 a);
public:number1():msg1(0), msg2(1){}number1(int msg1, int msg2) {this->msg1 = msg1;this->msg2 = msg2;}void Print() {cout << msg1 << "+" << msg2 << endl;}
private:int msg1;int msg2;
};number1 operator+(number1& one, number1& two) {number1 num1;num1.msg1 = one.msg1 + two.msg1;num1.msg2 = one.msg2 + two.msg2;return num1;
}ostream& operator<<(ostream& cout, number1 a) {cout << a.msg1 << a.msg2 << endl;return cout;
}int main() {number1 a(1, 2);number1 b(2, 3);number1 c = a + b;c.Print();cout << c << endl;return 0;
}