Конструктор копирования должен принимать const-ссылку на объект того же класса в качестве параметра. Он не может принимать параметр-объект без ссылки.
Если ты попытаешься объявить конструктор копирования, который принимает объект по значению вместо ссылки, компилятор выдаст ошибку. Это фундаментальное требование спецификации языка C++.
Причина простая: передача объекта по значению сама по себе потребовала бы конструктор копирования для создания копии, что привело бы к бесконечной рекурсии.
class MyClass {
public:
MyClass(const MyClass& other); // Правильно
};
class MyClass {
public:
MyClass(MyClass other); // Ошибка: компилятор выдаст ошибку
};
&), а не объектомКонструктор копирования, который принимает параметр non-const reference, например MyClass(MyClass& other), является валидным и соответствует стандарту C++.
Новый — ещё не проверен сообществом
Вы