2011-07-28 59 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“'将会有相同的类型,但是它们不会。 –