2011-07-28 98 views
5
void test(int && val) 
{ 
    val=4; 
} 

void main() 
{ 
    test(1); 
    std::cin.ignore();  
} 

是當test被稱爲int創建或通過默認在C++文字是int類型?文字和右值參考

+0

如果是這樣'測試(INT&VAL)'? –

+0

在調試模式下,代碼不能編譯... – Gob00st

+0

MSV10中至少編譯代碼 – Guillaume07

回答

7

請注意,您的代碼將使用C++ 11編譯器編譯只有

當通過一個整體的文本,這是通過int類型的默認情況下,除非你寫1L,創建int類型的一個臨時對象,其被綁定到函數的參數。這就像從以下初始化的第一

int &&  x = 1; //ok. valid in C++11 only. 
int &  y = 1; //error, both in C++03, and C++11 
const int & z = 1; //ok, both in C++03, and C++11 
0

調用測試時創建值爲1的int。文字按其形式輸入。例如,1是一個int,1.0是一個double,「1」是一個字符串。

+5

''1「'是一個'char const [2]'。 –

+1

這是一個字符串。 :-) –

+4

雖然這很誤導。 「」1「的類型不是」字符串「,並且沒有基本的」字符串「類型;如果有的話,大概'1「和'」11「'將會有相同的類型,但是它們不會。 –