Вопрос по подписи копировщика [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Вопрос по подписи копировщика [дубликат]

Сообщение Anonymous »

Приведенный ниже код невозможно скомпилировать.
#include

class Demo{
public:
Demo()=default;
Demo(const Demo&) = default;
Demo(Demo){}
};

Demo foo() {
Demo demo;
return demo;
}

int main() {
foo();
}

Вот на что жалуется компилятор:
:7:14: error: copy constructor must pass its first argument by reference
7 | Demo(Demo){}
| ^
| const &
1 error generated.

Итак, компилятор сообщает мне, что подпись конструктора копирования должна быть Demo(const Demo&), отличной от Demo(Demo). Я знаю, как исправить код и заставить его работать. Но я не совсем понимаю, почему бы компилятору не рассматривать Demo(Demo) как собственный конструктор, точно так же, как Demo(Demo, int), который видно ниже. Я очень растерялся, когда обнаружил, что приведенный ниже код работает хорошо
#include

class Demo{
public:
Demo()=default;
Demo(const Demo&) = default;
Demo(Demo, int){}
};

Demo foo() {
Demo demo;
return demo;
}

int main() {
foo();
}



Подробнее здесь: https://stackoverflow.com/questions/785 ... -copy-ctor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»