Я читаю книгу C++ Primer Plus (6-е издание), и я сталкивался с чем-то, что меня смущает, поэтому несите меня, пока я попытаться объяснить ...Разница между передачей (int x) и (const int & x)
Если у меня есть функция, прототип выглядит так:
void cube(double x);
и другая функция, кто прототип выглядит так:
void cube(const double &x);
чем разница между два? Для первого прототипа функции значение передается значением, означающим, что оно будет скопировано и таким образом не изменено функцией. Для второго прототипа значение передается по ссылке, но оно является постоянной ссылкой, поэтому C++ создает анонимную временную переменную и присваивает значение аргумента временной переменной, таким образом, имитируя проход по значению. Итак, по сути, нет никакой разницы между двумя прототипами функций, так? Какова точка (const double & x), то?
он не будет создавать временную переменную, вы передадите в адрес этого двойника с гуаратетом, что, если вызывающий не получает наркотики, он не может быть нулевым (вы получите исключение, которое я считаю, если вы попытаетесь разыменовать нулевую ссылку) и что вы можете использовать. вместо ->. Кроме того, вы не можете изменить содержимое, хранящееся внутри x – Creris
Мне нравится, как вы подробно описываете различия между ними. Тогда вы говорите «так что между ними нет разницы, верно?» Также вы не совсем точны в своем описании: здесь нет «анонимного временного». –