c++重载运算符加减号
时间: 2024-08-17 14:02:40 浏览: 152
在 C++ 中,重载运算符加号 (+) 和减号 (-) 允许程序员自定义基本算术操作的行为,使得特定类型的对象能够支持这些运算。当你编写像 `a + b` 或 `c - d` 这样的表达式时,编译器会查找相应的运算符重载函数来执行实际的操作。
1. **+ 运算符重载**:
如果你有一个用户定义的数据类型,比如 `Point`,你可以定义 `operator+(Point& p1, Point& p2)` 来表示两个点的相加。例如:
```cpp
class Point {
// ...
public:
Point operator+(const Point& other) { /* 实现加法 */ }
};
```
2. **- 运算符重载**:
同样地,可以定义 `operator-(const Point& p1, const Point& p2)` 来表示从第一个点减去第二个点:
```cpp
Point operator-(const Point& p1, const Point& p2) { /* 实现减法 */ }
```
重要的是,重载的运算符函数需要有匹配的参数类型,并返回适当的类型。此外,运算符重载还需要遵循一些规则,如结合性和优先级等,以保持与基础数学运算的一致性。
相关问题
c++函数重载运算符
C++中的函数重载运算符允许我们对内置运算符(如加号、减号等)进行自定义操作。函数重载运算符的格式为:
```
返回类型 operator 运算符 (参数列表) {
// 函数体
}
```
其中,`operator`关键字后面跟着要重载的运算符,参数列表中的参数个数和类型应该与该运算符的操作数相对应,返回类型可以是任何类型,包括自定义类型。
举个例子,我们可以定义一个`Complex`类,重载加号运算符,实现复数的加法操作:
```c++
class Complex {
public:
Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) {}
Complex operator + (const Complex& c) {
return Complex(real + c.real, imag + c.imag);
}
private:
double real;
double imag;
};
```
这样,我们就可以像使用内置类型一样使用`Complex`类型了:
```c++
Complex a(1.0, 2.0);
Complex b(3.0, 4.0);
Complex c = a + b; // 调用重载的加号运算符,c的值为(4.0, 6.0)
```
阅读全文