1

C++ で定数参照と非定数参照を使用すると、パフォーマンスに違いはありますか? はいの場合、どちらが優れているか、またその理由は何ですか?

SystemCのマニュアルには、非 const 参照によるオブジェクトの受け渡しが迅速な解決策であるという記述があります。

4

1 に答える 1

1

いいえ、まったく違いはありません。constローカルでのみ適用されますが、最近のコンパイラは参照が変更されたかどうかを自明に判断できるため、違いはありません。

次のシナリオを検討してください。

void MyClass::foo(const int& param)
{
    m_myInt1 = param + 1;
    m_myInt2 = param;
}

どちらの場合も、 への各アクセスはparamメモリを経由する必要があります。なんで?paramエイリアスの可能性があるためm_myInt1です。

MyClass bar;
bar.foo(bar.m_myInt1);

参照は、その参照によって変更できないことをconst意味するだけです。param他の参照 (この場合はthis->m_myInt1) を使用して変更することもできます。

于 2012-09-14T09:40:44.933 に答える