1

私のプログラムのほとんどでは、参照によってオブジェクトを渡してきました。

MyClass
{
  public:
    auto DoStuff()->void
    {
      //Doing stuff...
     }
};

MySubClass
{
  public:
    auto CallFunction(MyClass &MCO)->void
    {
      MCO.DoStuff();
    }
};

int main()
{
  MyClass MCO;
  MySubClass MSCO;
  MSCO.CallFunction(MCO);
}

編集する必要がない(その関数を呼び出すだけの)オブジェクトの場合、参照渡しは最もメモリ効率の高いソリューションですか?

または、代わりに生のポインターを使用しますか?

MyClass
{
  public:
    auto DoStuff()->void
    {
       //Doing stuff...
    }
 };

 MySubClass
 {
   public:
     auto CallFunction(MyClass *MCO)->void
     {
       MCO->DoStuff();
     }
 };

 int main()
 {
   MyClass *MCO;
   MySubClass MSCO;
   MSCO.CallFunction(MCO);
   delete MCO;
 }
4

1 に答える 1

1

オブジェクトを変更する必要がない場合は、const 参照で渡します。

void CallFunction(const MyClass &MCO)
{
  MCO.DoStuff();
}

通常、最適化ではなくセマンティクスに基づいて合格モデルを選択する必要があります。オブジェクトを ref または const ref で渡します。データを値で渡し、プログラミング モデルで必要な場合を除き、ポインターを使用しないでください。マイクロ最適化では、コンパイラよりも優れていることはほとんどありません。

プログラムのプロファイリングを行い、ボトルネックを特定したら、通常は、アルゴリズムやデータの保存方法を変更することで、費用対効果を高めることができます。

于 2016-10-29T17:57:36.617 に答える