Стандарт C ++ 8.5 / 12
Инициализация, возникающая при передаче аргументов, возврат функции, исключение (15.1), обработка исключения (15.3) и список инициализаторов, заключенных в фигурные скобки ( 8.5.1) называется копией-инициализацией и эквивалентна форме
T x = a;
Инициализация, возникающая в новых выражениях (5.3.4), static_cast выражениях (5.2.9), преобразования типов функциональных обозначений (5.2.3), а начальные и членные инициализаторы (12.6.2) называются прямой инициализацией и эквивалентны форме
blockquote>T x(a);
Для ref
Ключевое слово Уже упоминалось в MSDN , что:
Не следует путать концепцию передачи по ссылке с концепцией ссылочных типов. Эти два понятия не совпадают. Параметр метода может быть изменен с помощью ref независимо от того, является ли он типом значения или ссылочным типом. нет бокса типа значения , когда он передается по ссылке.
Что касается ключевого слова out
:
Ключевое слово out позволяет передавать аргументы по ссылке . Это аналогично ключевому слову ref , за исключением того, что ref требует, чтобы переменная была инициализирована до ее передачи.