無意中我碰到以下情況:爲什麼`std :: string`的賦值運算符是按值而不是`const`引用`char`的?
int i = 1000;
string s;
s = i; // ok, but value of `s` is not 1000!
這種情況已從string
標準庫的建立是由於以下操作:
string& string::operator=(_CharT __c)
{
this->assign(1, __c);
return *this;
}
現在,這是建立一個不想要的不良影響,其中意外,我們可能結束up給string
分配一個整數給錯誤的值!
例如,在我的情況下,i
之前是string
,然後我轉換爲int
。代碼仍在編譯,但由於其對整體代碼的明顯不利影響,程序崩潰了。
這種情況就可以避免,如果它是:
string& operator=(const _CharT& c);
這背後以上版本不具有動機是什麼?
你可能想重新考慮你的前提:http://coliru.stacked-crooked.com/a/68856fcbf9f12175 – chris
另一個[住在這裏](http://ideone.com/Ztd2T6)。 CNR。逐字逐句的MCVE在展示你看到的任何東西方面都會有很長的路要走,因爲我們不是。 – WhozCraig
@chris,謝謝指出。我現在編輯了我的問題。 – iammilind