void test(int && val)
{
val=4;
}
void main()
{
test(1);
std::cin.ignore();
}
调用int
时是否创建了test
,或者c ++文字默认是int
类型?
答案 0 :(得分:7)
请注意,您的代码将使用C ++ 11编译器编译 。
当您传递默认为int
类型的整数文字时,除非您编写1L
,否则会创建类型为int
的临时对象它绑定到函数的参数。它类似于以下初始化中的 first :
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
答案 1 :(得分:0)
调用test时会创建值为1的int。文字是按其形式输入的。例如,1是int,1.0是double,“1”是字符串。