c ++中的字符串运算符重载 - 我真的不明白

时间:2013-01-14 19:57:55

标签: c++ operator-overloading

这是我的代码:

#include <iostream>
#include <string.h>
using namespace std;

string& operator+(string & lhs, int & rhs) {
    char temp[255];
    itoa(rhs,temp,10);
    return lhs += temp;
}

int main() {
  string text = "test ";
  string result = text + 10;
}

结果是:

test.cpp: In function 'int main()':
test.cpp:15:26: error: no match for 'operator+' in 'text + 10'
test.cpp:15:26: note: candidates are:
/.../

应该是test 10

2 个答案:

答案 0 :(得分:14)

rvalue(10)无法绑定到非const引用。您需要重写operator+,以int const &int为参数。

当你在它时,你想要重写它,所以它也不会修改左操作数。 operator +=应修改其左操作数,但operator +不应修改。

答案 1 :(得分:3)

您不应该通过引用获取int。只需按价值看待它。你的问题是你试图对文字整数采用非const引用 - 更改文字的含义是什么?

那说你可能会考虑不要创建这样的运营商,因为它很有可能混淆未来的维护者。