文字和右值参考

时间:2011-07-28 19:44:37

标签: c++11 rvalue

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

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

调用int时是否创建了test,或者c ++文字默认是int类型?

2 个答案:

答案 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”是字符串。