這個編譯:-)VS2008 C++編譯器錯誤?
string name;
name = 1;
這並不:
string name = 1;
有什麼想法?
我知道這是錯誤的。 。 。那不是重點。第一個給笑臉。
這個編譯:-)VS2008 C++編譯器錯誤?
string name;
name = 1;
這並不:
string name = 1;
有什麼想法?
我知道這是錯誤的。 。 。那不是重點。第一個給笑臉。
第一次編譯是因爲賦值運算符被稱爲「string & operator =(char c)」的一個簽名,編譯器可以將1轉換爲char。
第二個不會編譯,因爲它調用沒有兼容簽名的複製構造函數。
第二個例子是真正的初始化而非賦值,即它調用構造函數而不是operator=
。顯然,類string
沒有一個將整數作爲參數的構造函數,但它的賦值操作符對它是可以的。而你得到笑臉的原因是它是ASCII值爲1的字符。
順便說一下,這不是特定於Visual Studio。任何C++編譯器都應該以相同的方式運行。
與問題無關,但您爲什麼不(和其他人)發佈可編譯代碼。會:
#include <string>
using namespace std;
int main() {
string name;
name = 1;
string name2 = 1;
}
已經太多要問?鑑於此,我們可以看到「string」實際上是指std :: string而不是一些隨機類。
我想如果包含沒有顯示,那麼它被認爲是標準。如果是隨機課程,那麼你必須展示它。此外,他很快得到了正確的答案,從而強化了行爲(對所有看到它的人)。我認爲這就是它成爲常態的原因。 –
我同意這裏的很多代碼示例都不夠完整,但對於這樣簡單的事情來說更是不必要的。此外,這不應該是一個答案,而是一個評論。 – krdluzni
對我來說,並不是猜測'string'是指什麼,但是我必須自己編寫一個可編輯的例子才能玩弄它。我非常感謝他們遞交了一個現成的例子,如果我有這個問題,我更有可能更加關注這個問題。 – sbi