常量引用相对于非常量引用的性能

时间:2012-09-14 09:38:27

标签: c++ performance compiler-construction compiler-optimization

在C ++中使用常量引用和非常量引用时性能是否存在差异?如果是,那么哪个更好,为什么?

SystemC手册中有一条声明,即通过非const引用传递对象是一种快速解决方案。

1 个答案:

答案 0 :(得分: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)修改它。