Есть ли разница в производительности при использовании константной ссылки и непостоянной ссылки в C ++? Если да, то что лучше и почему?
Есть заявление в SystemC Руководство по передаче объектов по неконстантной ссылке — это быстрое решение.
Нет, разницы нет вообще. 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
).
Других решений пока нет …