像+、-号进行运算符重载,过程类似,见以下代码示例:
cpp
#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),可以作为当前类的成员函数,这样就可以实现对象的输出,见以下代码示例
cpp
#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;
}