Выполнение постоянных ссылок над непостоянными ссылками

Есть ли разница в производительности при использовании константной ссылки и непостоянной ссылки в C ++? Если да, то что лучше и почему?

Есть заявление в SystemC Руководство по передаче объектов по неконстантной ссылке — это быстрое решение.

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).

1

Другие решения

Других решений пока нет …