1

const 参照線量リレーによって何かを保存する場合、私はさまよっているこの状況があります。この関数は何百回も呼び出される可能性があります。

私が持っている:
intをconst参照として返す汎用コンテナ

struct Val
{
 public:
    Val(int& v)
    {
        iVal = v;
    }

    const int& toInt()
    {
        return iVal;
    }

private:
    int iVal;
};

数値を取得する関数:

Val Mo::doSomthing()
{
  Val v(444444);
  return v;
}

d を呼び出すoSomthing().toInt():

int x = 0;
class Foo {
...
....
Mo mo;
void Foo::setInt(float scaleX)
{

   x = mo.doSomthing().toInt();
   //x is class member which other functions are using it 

}
...
...
..
}

この場合、一部のビットを節約するために const 参照を使用する理由はありますか?

4

1 に答える 1

2

一般に、スカラー型の場合、値で返す方が安価です。参照 (およびポインター) は、通常のスカラー型とほぼ同じサイズ (語長) です。int& を返す場合、同じ量のデータが返されますが、参照されるデータにアクセスする場合、実行中のプラットフォームは参照を解決する (参照されるメモリにアクセスする) 必要があります。

しかし、前のコメントは正しいです。最初に測定してください。これは一種のマイクロ最適化です。

于 2017-01-01T10:24:21.157 に答える