要求重载运算符函数为友元函数
时间: 2023-06-26 12:06:16 浏览: 130
运算符重载:友元(friend)函数问题
友元函数是在类定义外部定义的函数,但是可以访问类的私有成员。如果要将重载运算符函数定义为友元函数,需要在类的定义中声明该函数为友元函数,同时在函数定义中使用 friend 关键字。
例如,如果我们要将加法运算符 + 定义为友元函数,可以这样写:
```cpp
class MyInt {
public:
MyInt(int num) : val(num) {}
friend MyInt operator+(const MyInt& lhs, const MyInt& rhs);
private:
int val;
};
MyInt operator+(const MyInt& lhs, const MyInt& rhs) {
return MyInt(lhs.val + rhs.val);
}
```
在上面的例子中,我们在类定义中声明了 `operator+` 为友元函数,然后在函数定义中使用了 friend 关键字。这样,我们就可以在 `operator+` 中访问 MyInt 类的私有成员 val 了。
注意,友元函数虽然可以访问类的私有成员,但它不是类的成员函数,因此它没有 this 指针,也不能直接访问类的非静态成员。
阅读全文