c++ 重载+运算符
时间: 2023-12-03 12:05:53 浏览: 147
C++ 中的运算符重载是指给已有的运算符赋予新的功能或含义。通过重载运算符,我们可以定义自定义的数据类型在使用运算符时的行为。
要重载一个运算符,需要使用特定的函数名和语法。以下是一些常见的运算符以及对应的函数名:
- 一元运算符:重载时只需要一个参数
- 一元正号:`+` ==> `operator+`
- 一元负号:`-` ==> `operator-`
- 逻辑非:`!` ==> `operator!`
- 二元运算符:重载时需要两个参数
- 加法:`+` ==> `operator+`
- 减法:`-` ==> `operator-`
- 乘法:`*` ==> `operator*`
- 除法:`/` ==> `operator/`
- 取余:`%` ==> `operator%`
- 等于:`==` ==> `operator==`
- 不等于:`!=` ==> `operator!=`
- 赋值运算符:重载时需要两个参数
- 赋值:`= ` ==> `operator=`
- 加法赋值:`+=` ==> `operator+=`
- 减法赋值:`-=` ==> `operator-=`
- 乘法赋值:`*=` ==> `operator*=`
- 除法赋值:`/=` ==> `operator/=`
除了以上列举的运算符,C++ 还提供了其他一些运算符可以进行重载。在重载运算符时,需要注意运算符的语义和预期行为,以及遵循一些重载运算符的约定和规则。
相关问题
c++ 在重载后置++运算符为什么要加一个占位参数
在重载后置运算符时,需要在函数签名中加上一个占位参数,通常命名为int,目的是为了区分后置运算符和前置运算符,因为在C++中,后置运算符需要在参数列表中多加一个int参数,以区分前置运算符。例如:
```c++
class Counter {
private:
int count;
public:
// 前置++运算符重载,无需占位参数
Counter& operator++() {
++count;
return *this;
}
// 后置++运算符重载,需要加上一个占位参数
Counter operator++(int) {
Counter temp(*this);
++count;
return temp;
}
};
```
在上面的例子中,重载后置++运算符时,需要在函数签名中加上一个int参数,以区分前置++运算符。当使用后置++运算符时,编译器会自动传入一个0作为占位参数,这个值没有实际意义,只是为了区分前置和后置运算符。
重载+-运算符c++
在C++中,可以重载运算符来改变运算符的默认行为,使其适用于特定类的对象。其中包括+、-、*、/等等。
重载+运算符时需要注意以下几点:
1. 只有至少一个操作数是类对象时才能重载。
2. 不能重载原有的运算符,如不支持重载“&&”、“||”、“,”、“->”、“.”等。
3. 不能改变运算符的优先级和结合性。
4. 重载的运算符函数必须是类的成员函数或友元函数。
5. 重载的运算符函数名为“operator+”。
例如,我们可以定义一个名为“Vector”的类,并重载它的“+”运算符,以便我们可以使用“+”将两个Vector对象相加。具体实现代码如下:
```
class Vector {
public:
Vector operator+(const Vector& vec) {
Vector result;
result.x = x + vec.x;
result.y = y + vec.y;
return result;
}
private:
int x, y;
};
```
以上代码中,“Vector operator+(const Vector& vec)”是重载的加法运算符函数。它通过接受一个类型为Vector的常引用参数,计算并返回一个新的Vector对象。我们可以在程序中像下面这样使用它:
```
Vector v1(1, 2), v2(2, 3);
Vector v3 = v1 + v2;
```
以上代码中,v1和v2是两个Vector对象,v3是它们相加后得到的新Vector对象。
阅读全文