5
void test(int && val)
{
    val=4;
}

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

aint是在test被调用时创建的,还是在 C++ 文字中默认为int类型?

4

2 回答 2

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
于 2011-07-28T20:03:05.540 回答
0

调用 test 时会创建一个值为 1 的 int。文字按其形式键入。例如,1 是 int,1.0 是 double,“1”是字符串。

于 2011-07-28T19:53:24.863 回答