今天我在程序中遇到了一個有趣的情況,那就是我無意中將一個無符號整數賦值給std :: string。 VisualStudio C++編譯器沒有給出任何警告或錯誤,但是當我運行該項目時,我碰巧注意到了這個錯誤,並且它給了我字符串的垃圾字符。爲什麼C++允許將整數分配給字符串?
這是那種眼神什麼的代碼,如:
std::string my_string("");
unsigned int my_number = 1234;
my_string = my_number;
下面的代碼也編譯罰款:
std::string my_string("");
unsigned int my_number = 1234;
my_string.operator=(my_number);
在一個錯誤的結果如下:
unsigned int my_number = 1234;
std::string my_string(my_number);
什麼正在進行?編譯器如何使用最後一個代碼塊停止構建,但讓前兩個代碼塊構建?
什麼是編譯器錯誤? 對我來說,g ++ v4.4編譯並正常工作 – CsTamas 2009-07-24 13:47:37
對不起,我對第二個代碼塊犯了一個錯誤 - 它確實會編譯。 最後一個失敗的錯誤是沒有接受無符號整數的std :: string構造函數。 – user55417 2009-07-24 13:55:12