2016-12-01 1 views
0

Я новичок в C++, и я работаю над программой, которая имитирует телефонную книгу. Теперь, для операции вставки, функция определяется следующим образом:C++ Зачем использовать ссылку?

void PhoneBook::insert(const string& name, const string& number) 

Но он все еще работает и вставляет контакт, а если убрать опорные символы. Итак, я немного запутался здесь, зачем они мне нужны?

void PhoneBook::insert(const string name, const string number) 
+1

Во избежание ненужного копирования строк. – Kane

ответ

2

void PhoneBook::insert(const string name, const string number)

Здесь возводит новые строки с копией всех данных. Это тяжелая операция.

void PhoneBook::insert(const string& name, const string& number)

Здесь вы передаете ссылку на строку (адрес строки), размер которого, как правило, 4 или 8 байт, основанный на платформе, которая является очень легкой операцией.

Кроме того, при передаче ссылки вы можете взаимодействовать с объектом, который передается функции.

Правило большого пальца - всегда передается с помощью ссылки const, если переменная больше 8 байтов, и вам не требуется явная копия объекта.

+0

Спасибо, я буду работать над данной дублированной ссылкой. – Yazgan

+0

Это не позволяет устранить фундаментальную семантическую разницу между ссылкой на посторонний объект и созданием новой копии для хранения. Проблемы оптимизации, которые кажутся все увлечением ссылочными параметрами, идут позже по линии. – Quentin

 Смежные вопросы

  • Нет связанных вопросов^_^