运算符重载怎么让参与运算的输在运算符前面?
时间: 2024-10-21 11:04:50 浏览: 15
复数的运算 运算符重载.cpp
在C++中,运算符重载允许程序员改变已有的运算符行为,但这并不包括改变运算符本身的左右结合规则。标准库中的运算符如`+`, `-`, `*`, `/`等都是右结合的,这意味着它们在解析时,右边的元素总是先计算。例如,`a * b + c`会首先计算`a * b`,然后将结果与`c`相加。
如果你想要在表达式中改变运算符的优先级,通常的做法是通过创建新的函数或运算符函数(overload function or operator function),而非改变现有运算符的行为。例如,你可以定义一个新的函数`precededAdd`,其参数放在运算符两侧:
```cpp
template<typename T>
T precededAdd(T left, T right) {
return left + right;
}
int main() {
int x = precededAdd(5, 3); // 此处x = 5 + 3,跟常规的加法一样,只是写法改变了
return 0;
}
```
但这仅仅是改变了书写形式,并非真正意义上的“让参与运算的对象位于运算符前面”。实际上,编译器会按照原有的运算符规则进行处理。
阅读全文