如何在C++中重载运算符?
时间: 2024-06-13 22:07:41 浏览: 116
C++中允许重载的运算符有很多,包括算术运算符、位操作运算符、逻辑运算符、比较运算符、赋值运算符等。而不能重载的运算符只有五个,分别是 . 、 .* 、 :: 、 sizeof 和 ?: 。
运算符重载可以通过两种方式实现:成员函数重载和友元函数重载。其中,成员函数重载是指将运算符重载为类的成员函数,而友元函数重载则是将运算符重载为类的友元函数。
下面是一个将“+”运算符重载为类的成员函数的例子:
```c++
class MyClass {
public:
int num;
MyClass operator+(const MyClass& obj) {
MyClass res;
res.num = this->num + obj.num;
return res;
}
};
```
上述代码中,我们将“+”运算符重载为类的成员函数,实现了两个MyClass对象相加的功能。在重载函数中,我们使用了this指针来访问当前对象的成员变量,使用const关键字来保证参数的常量性,从而避免了参数被修改的风险。
下面是一个将“-”运算符重载为类的友元函数的例子:
```c++
class MyClass {
public:
int num;
friend MyClass operator-(const MyClass& obj1, const MyClass& obj2) {
MyClass res;
res.num = obj1.num - obj2.num;
return res;
}
};
```
上述代码中,我们将“-”运算符重载为类的友元函数,实现了两个MyClass对象相减的功能。在重载函数中,我们使用了friend关键字来声明该函数为类的友元函数,从而可以访问类的私有成员变量。
阅读全文