Конструкторы копирования определяются таким образом:
C++ 11 12,8/2: Конструктор не-шаблон для класса X
является конструктор копирования, если ее первый параметр имеет тип X&
, const X&
, volatile X&
или const volatile X&
, либо других параметров нет, либо все остальные параметры имеют аргументы по умолчанию
Другими словами, он должен быть вызван одним аргументом - ссылкой на объект, который нужно скопировать, но может иметь дополнительные, необязательные параметры.
Ваш пример не соответствует этому требованию, поскольку он имеет два обязательных параметра. Если второй параметр имел значение по умолчанию:
A(const A& obj, int x=42, char y='A')
тогда это был бы экземпляр-конструктор.
Если это определено как в вашем вопросе, то нет, это не экземпляр-конструктор, это просто нормальный перегруженный конструктор. Конструктор копирования принимает только один единственный аргумент, экземпляр объекта для копирования. –
Нет, этот конструктор не будет квалифицироваться как конструктор копирования. – juanchopanza
Конструктор копирования может иметь более одного параметра, если все дополнительные параметры имеют значения по умолчанию –