После нескольких лет, не касаясь C++, я возвращаюсь к нему и решил снова учиться с помощью учебника («Sutherland, Bruce, Learn C++ for Game Development» (стр. 59) Apress. Kindle Edition. "). У меня 2 простых вопросов:Передача значений в качестве опорных значений и значений «const»
1) В одном примере, в книге используются следующие строки кода для вызова функции:
string playerInput;
GetPlayerInput(playerInput);
И сама функция определяется как:
void GetPlayerInput(string& playerInput)
{
cin >> playerInput;
}
Вопрос: Провод «playerInput» передается как «строка &». Это действительно необходимо? Почему это передается в качестве ссылки, когда мы могли бы сделать функцию возвращать строку и сделать это следующим образом:
string playerInput;
playerInput = GetPlayerInput();
И:
string GetPlayerInput()
{
cin >> playerInput;
return playerInput;
}
Является ли это просто стилистический выбор, или я что-то не хватает Вот?
2) акцесор класса, чтобы получить имя пользователя был определен как:
'void SetName(const std::string& name);'
Нет другого объяснения. Что случилось с этой «созвездием»? Я сделал некоторые исследования, но только больше смутился. Зачем вам это нужно при передаче строки в качестве параметра (и снова как ссылка?)
Большое вам спасибо за помощь!
Вот хороший список из [C++ books] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). Очень хорошо объяснено в книгах Скотта Мейерса. –
взгляните на концепцию пропуска по значению и перейдите по ссылке. Если вы передаете по значению, то вы бесполезно вызываете конструктор копирования (в зависимости от требования) и const, потому что вы можете не захотеть случайно записать его, когда вам этого не нужно. И согласно одному предложению, пожалуйста, прочитайте книгу Скотта Мейерса –
. Книга теперь находится в моем списке «читать» следующее :-) –