Qubc
@Qubc
Ненавижу полисемию.

Почему конструктор Class ( Class other) { } не может принимать объект своего типа по значению?

Предположения: конструктор, по сути, это функция, которая ничего не возвращает, получает адрес своего объекта неявно и получает что-то ещё в списке параметров явно. Параметры выделяются в стеке вызывающей функции и используются вызываемой функцией.
Почему эта логика не работает с конструктором? Просто потому что или есть какие-то сложные причины? Понятно, что это неэффективно и бессмысленно.
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
Потому что чтобы передать какой-либо агрумент по значению, его нужно скопировать. Чтобы скопировать аргумент, который является объектом класса, нужно вызвать конструктор копирования (неважно, сгенерирован ли он автоматически или вручную написан).

Т.о., чтобы "зайти внутрь" конструктора копирования, которому аргумент передан по-значению, нужно вызвать... конструктор копирования. Этого же класса. Т.е. этот же самый конструктор.

Вроде должно быть понятно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы