при вызове fn в c ++ аргументы копируются в соответствующий параметр. Это инициализация или присвоение?

при вызове функции в c ++ аргументы копируются в соответствующий параметр. Это инициализация или присвоение?

4

Решение

Семантика передачи аргумента — это инициализация. Это значит, что ваши классы будут использовать конструкторы копирования / перемещения.

7

Другие решения

Тогда аргументы по значению они построены по принципу копирования (то есть инициализации).

1

Инициализация: (пожалуйста, проверьте оригинал-проект)

5.2.2 Вызов функции

Когда вызывается функция, каждый параметр должен быть инициализируется с соответствующим аргументом. [Такие инициализации
неопределенно упорядочены по отношению друг к другу] Когда функция
параметры, имеющие тип объекта, должны иметь
полностью определенный тип объекта. [это все еще позволяет параметру быть
указатель или ссылка на неполный тип класса. Однако это мешает
переданный по значению параметр имеет неполный тип класса.] В течение
инициализации параметра, реализация может избежать
строительство дополнительных временных, объединяя преобразования на
связанный аргумент и / или строительство временных с
инициализация параметра.
Время жизни параметра заканчивается, когда
функция, в которой он определен, возвращает. Инициализация и
уничтожение каждого параметра происходит в контексте вызова
функция.
[доступ конструктора, функции преобразования или
деструктор проверяется в точке вызова в вызывающей функции. Если
конструктор или деструктор для параметра функции выдает
Исключение составляет поиск обработчика в области вызова.
функция; в частности, если вызываемая функция имеет
function-try-block с обработчиком, который может обработать исключение,
этот обработчик не рассматривается.]

0
По вопросам рекламы [email protected]