友元类函数运算符重载
时间: 2024-04-08 12:27:35 浏览: 122
友元类函数运算符重载是指在一个类中定义的函数,用于对类的对象进行特定的运算符操作。通过友元函数,可以访问类的私有成员和保护成员,从而实现对运算符的重载。
下面是一个示例,展示了如何在一个类中定义友元类函数运算符重载:
```cpp
class MyClass {
private:
int value;
public:
MyClass(int v) : value(v) {}
// 友元类函数运算符重载
friend MyClass operator+(const MyClass& obj1, const MyClass& obj2);
void display() {
cout << "Value: " << value << endl;
}
};
// 友元类函数运算符重载的实现
MyClass operator+(const MyClass& obj1, const MyClass& obj2) {
int sum = obj1.value + obj2.value;
return MyClass(sum);
}
```
在上面的示例中,我们定义了一个名为`MyClass`的类,其中包含一个私有成员`value`。然后,我们定义了一个友元类函数`operator+`,用于对两个`MyClass`对象进行相加操作。在该函数中,我们可以直接访问`MyClass`对象的私有成员`value`,并将它们相加得到一个新的`MyClass`对象。
使用友元类函数运算符重载时,可以像使用内置运算符一样使用自定义的运算符。例如:
```cpp
int main() {
MyClass obj1(5);
MyClass obj2(10);
MyClass obj3 = obj1 + obj2; // 使用重载的+运算符
obj3.display(); // 输出:Value: 15
return 0;
}
```
在上面的示例中,我们创建了两个`MyClass`对象`obj1`和`obj2`,然后使用重载的`+`运算符将它们相加得到一个新的对象`obj3`。最后,我们调用`obj3`的`display()`函数来显示其值。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)