【问题标题】:C++ How to overload an operator without an identifier before itC ++如何重载没有标识符的运算符
【发布时间】:2015-09-01 12:44:06
【问题描述】:

例如:

#include <iostream>
using namespace std;

int main(){
int a;
+a;

}

我希望算术加“+”运算符被重载,这样如果它出现在一个标识符之前(在本例中为“a”),它将打印“Hello”,而“+”运算符之前没有另一个标识符,基本上不是这样的:“identifierA+identifierB”,而是这样的“+identifierB”(在本例中是“+a”),程序编译的结果是“Hello”。 这怎么可能?

提前感谢您的帮助。

【问题讨论】:

  • 该语言不允许为基本类型重载现有运算符。
  • 例如,我有一个动态指针,我正在访问索引 2:“*(pointer+1)”,我试图弄清楚如何在标识符之前有一个诸如星号之类的运算符某种形式,在此之前没有标识符。
  • 要重载用户定义类型的一元加号运算符,请参阅stackoverflow.com/questions/5117563/use-of-unary-plus-operator

标签: c++ math operator-overloading operators identifier


【解决方案1】:

如 cmets 中所述,在 C++ 中不允许为基本类型重载现有运算符。您可以为用户定义的类型重载运算符,但这不是您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多