C++ で定数参照と非定数参照を使用すると、パフォーマンスに違いはありますか? はいの場合、どちらが優れているか、またその理由は何ですか?
SystemCのマニュアルには、非 const 参照によるオブジェクトの受け渡しが迅速な解決策であるという記述があります。
C++ で定数参照と非定数参照を使用すると、パフォーマンスに違いはありますか? はいの場合、どちらが優れているか、またその理由は何ですか?
SystemCのマニュアルには、非 const 参照によるオブジェクトの受け渡しが迅速な解決策であるという記述があります。
いいえ、まったく違いはありません。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
) を使用して変更することもできます。