如何将一个运算符重载为类的友元函数
时间: 2023-06-06 08:08:01 浏览: 134
3.2+友元函数实现运算符重载1
很高兴回答您的问题。要将一个运算符重载为类的友元函数,可以在类的定义之外定义该函数,并在其中指定类作为参数。例如,如果想要重载"+"运算符为一个类的友元函数,可以这样定义:
```c++
class MyClass {
public:
int a, b;
MyClass operator+(const MyClass& rhs); // 声明运算符重载
friend MyClass operator+(int lhs, const MyClass& rhs); // 定义友元函数
};
MyClass MyClass::operator+(const MyClass& rhs) {
MyClass res;
res.a = a + rhs.a;
res.b = b + rhs.b;
return res;
}
MyClass operator+(int lhs, const MyClass& rhs) {
MyClass res;
res.a = lhs + rhs.a;
res.b = lhs + rhs.b;
return res;
}
```
在这个例子中,"+"运算符被重载为MyClass类的成员函数,"+"运算符也被重载为一个类的友元函数。友元函数定义在类的外部,必须在函数名前加上关键字"friend"以访问类的私有成员。由于友元函数不是MyClass类的成员函数,因此不能使用this指针。重载后的"+"运算符可以像原始的"+"运算符一样使用,也可以使用友元函数的方式来调用。
阅读全文