void test(int && val)
{
val=4;
}
void main()
{
test(1);
std::cin.ignore();
}
aint
是在test
被调用时创建的,还是在 C++ 文字中默认为int
类型?
请注意,您的代码只能使用 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
调用 test 时会创建一个值为 1 的 int。文字按其形式键入。例如,1 是 int,1.0 是 double,“1”是字符串。