0

正直なところ、速度のために作成するメソッドでconst参照を使用することはめったにありません。たとえば、このSSCEpass by (const) reference if you want speedのように、変数に値を与えるために、必要なときにのみ参照を作成します。

void Do( int& iref )
{
    a = 2;
}

{
    int a = 0;
    Do( a );
}

問題は、オブジェクトが関数呼び出しで作成された場合、それが参照としても渡される場合、それはどのように機能するかということです。

void Add( CString& strPath )
{
    g_Path.push_back( strPath );
}

for( std::string line; getline( input, line ); )
{
    Add( CString( line.c_str() ) ); //object created on function call
}
4

1 に答える 1

3

それはどのように機能しますか?そうではありません。一時オブジェクトは非定数左辺値参照にバインドできないため、コードはコンパイルされません。

(ただし、一時オブジェクトはconst参照または右辺値参照にバインドできます。)

于 2012-10-13T15:36:54.413 に答える