Возможный дубликат:
Почему конструктор копирования принимает свой параметр по ссылке в С++?
Может ли объект передаваться как значение конструктору копирования
Рассмотрим этот фрагмент кода:
class complex{
private:
double re, im;
public:
complex(double _re, double _im):re(_re),im(_im){}
complex(complex c):re(c.re),im(c.im){}
};
При компиляции я получил сообщение об ошибке: invalid constructor; you probably meant ‘complex (const complex&)’
В книге C++ Programming Language
написано, что:
Конструктор копирования определяет, какие средства копирования - включая копирование аргумента означает, что запись
complex: complex (complex c): re (c.re), im (c.im) {}//ошибка
- ошибка, потому что любой вызов включал бы бесконечную рекурсию.
Почему это приводит к бесконечной рекурсии? Это не имеет смысла.