2017-10-18 59 views

回答

9

std::vector已經無關,與std::vector你的樣品是類似

std::string s; 
s = 42; 

std::string s = 42; // Constructor: "equivalent" to std::string s = std::string(42) 

不同於

std::string s; 
s = 42; // assignation: s.operator =(42) 

std::string::operator=(char)存在而構造回吐char沒有。

+1

和一個int隱式強制轉換爲一個char – Steve

+3

@Steve正確的術語是「隱式轉換」,強制轉換總是明確的。 –

6

std::vector是一個紅色的鯡魚。如果你只是嘗試以下方法,它也將編譯罰款:

#include <string> 
int main() 
{ 
    std::string str; 
    str = 42; 
} 

,你實際上是做什麼用std::string::operator=(char)其指定一個字符的字符串。 42可以隱式轉換爲char。根據ascii表格,值42由'*'字符表示。我們可以用下面的驗證這一點:

#include <iostream> 
#include <string> 
int main() 
{ 
    std::string str; 
    str = 42; 
    std::cout << str; // Prints * 
} 
相關問題