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は整数、1.0は倍精度浮動小数点数、「1」は文字列です。

于 2011-07-28T19:53:24.863 に答える