string& operator+= (const string& str);
当我们查看函数原型时,我们假设传入函数的字符串不会被更改,对吧?
但是,考虑一下情况:
string str("Example");
str += str;
实际上,字符串'str'已更改。 这种情况不是很奇怪吗?
将原型更改为更好吗?
string& operator+= (string& str);
我搜索了许多这样的来源和例子,但对大多数人来说似乎很正常。没有人问过这个问题,或者可能是我找不到的问题。(对不起,如果这是我的问题,很难为非母语人士找到合适的关键词)
答案 0 :(得分:0)
const
并未说明根本无法修改函数参数。它只是表示无法通过该参数修改。如果您将特定对象作为const和非const参数传递,那么如果它发生变化,您几乎不会感到惊讶!
另一方面,如果你声明对象本身是const,那么你可以保证(或多或少)它根本没有改变,因为试图将它作为非const参数传递将会失败