LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

вот это «нужно» уже навязано С/С++ пониманием. можно передавать объект по ссылке или по значению. в более других языках есть например ключевое слово IN которое показывает что это – входной параметр, значит, он передается по ссылке, и более того, изменять внутри функции его нельзя.

в с++ как и в С – всего этого нет. поэтому «указатель на объект»,«ссылка на объект», &foo – это костыль особенностей С или С++ (еще например в ANSI/K&R ссылок нет, только указатели – так что ты сам должен понять где передавать по ссылке – и взять &адрес , например, в sscanf – а где по значению, и понимать что работаешь с копией переданного значения, соответственно если его внутри функции пытаться менять – изменишь копию).

ой ну и путаница у тебя в голове. в с++ IN параметр просто записывается явно - const T&. (то есть ссылка на констатное значение)

а & value - это тоже самое что addr(value), просто амперсандом обозначена функция взятия адреса, и такое многозначное использование лексем в с++ - это у них привычка. то есть это вовсе не тот амперсанд что в ссылке.

то есть амперсанд в с++ используется в зависимости от контекста, как битовая операция, как обозначение ссылки, и как оператор взятия адреса.

Исходная версия alysnix, :

вот это «нужно» уже навязано С/С++ пониманием. можно передавать объект по ссылке или по значению. в более других языках есть например ключевое слово IN которое показывает что это – входной параметр, значит, он передается по ссылке, и более того, изменять внутри функции его нельзя.

в с++ как и в С – всего этого нет. поэтому «указатель на объект»,«ссылка на объект», &foo – это костыль особенностей С или С++ (еще например в ANSI/K&R ссылок нет, только указатели – так что ты сам должен понять где передавать по ссылке – и взять &адрес , например, в sscanf – а где по значению, и понимать что работаешь с копией переданного значения, соответственно если его внутри функции пытаться менять – изменишь копию).

ой ну и путаница у тебя в голове. в с++ IN параметр просто записывается явно - const T&. (то есть ссылка на констатное значение)

а & value - это тоже самое что addr(value), просто амперсандом обозначена функция взятия адреса, и такое многозначное использование лексем в с++ - это у них привычка. то есть это вовсе не тот амперсанд что в ссылке.

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