0
string& operator+= (const string& str);

当我们查看函数原型时,我们假设传递给函数的字符串不会改变,对吧?

但是,请考虑以下情况:

string str("Example");
str += str;

实际上,字符串“str”已更改。这样的场景是不是很奇怪?

将原型更改为更好吗?

string& operator+= (string& str);

我已经搜索了很多这样的来源和例子,但对大多数人来说似乎很正常。没有人问这个问题,或者可能是我没有找到。(对不起,如果这是我的问题,对于非母语人士来说很难找到合适的关键字)

4

1 回答 1

0

const并不是说函数参数根本不能修改。它只是说它不能通过该参数进行修改。如果您将特定对象同时作为 const 和非 const 参数传递,那么如果它发生变化,您几乎不会感到惊讶!

另一方面,如果您将对象本身声明为 const,那么您可以保证(或多或少)它根本不会更改,因为尝试将其作为非 const 参数传递只会失败。

于 2015-05-06T16:31:52.103 回答