Я знаю, что передача каждого аргумента по ссылке может быть вредной ...
Использование константной ссылки предотвратит изменение передаваемого объекта, так что это безопасно.
Является ли передача аргумента по ссылке / с помощью указателя лучше для общей производительности программы, чем при обычной передаче?
Из logi c POV это потому что нет копий уже сохраненных переменных, но так ли это на самом деле?
Ваш вопрос относится к передаваемым переменным для использования их значений, но не для их изменения:
В случае, для instace:
void test(const int& value);
Позвоните
int i;
test(i);
Различия в производительности и / или пространстве практически отсутствуют, для примитивных типов вам не нужно беспокоиться об этом.
Но если у вас объекты сложного типа, их размер перестает быть незначительным, их размер почти всегда больше, чем размер указателя, и копирование их может привести к незначительной потере производительности, в этом случае лучше передать по ссылке, вы передаете адрес этой переменной, и это позволяет избежать ненужных копии.
class Complex{
//data members inside
};
void test(const Complex& c){
complex c;
test(c);
}
Звоните
Complex c;
test(c);