Может (неявный)дефолт конструктор копирования призвать к учебный класс это уже пользовательский конструктор но это не конструктор копирования?
Если это возможно, предположим, что мы определите конструктор копирования для класса явно, теперь можно вызывать (неявный) конструктор по умолчанию?
Во-первых, давайте немного уточним наш словарный запас. Конструктор по умолчанию
конструктор, который можно вызвать без каких-либо аргументов. Копия
Конструктор — это конструктор, который можно вызвать с одним аргументом.
того же типа. Учитывая это, «конструктор копирования по умолчанию» будет
конструктор с подписью что-то вроде:
class MyClass
{
public:
static MyClass ourDefaultInstance;
// default copy constructor...
MyClass( MyClass const& other = ourDefaultInstance );
};
Почему-то я не думаю, что это то, что вы имели в виду. я считать какие
вы спрашиваете, является неявно объявленным или неявно определенным
конструктор копирования; конструктор копирования, чье объявление или определение
предоставляется неявно компилятором. Компилятор всегда предоставит
декларация, если вы не предоставите декларацию чего-то, что может
считаться копирующим конструктором. Предоставление других конструкторов не будет
предотвратите неявное объявление компилятором конструктора копирования.
Это отличается от конструктора по умолчаниюлюбой определяемые пользователем
конструктор предотвратит неявное объявление компилятором
конструктор по умолчанию. Это означает, что если у вас есть пользовательская копия
конструктор, компилятор не будет неявно объявлять значение по умолчанию
конструктор.
Вторым важным моментом является то, что вы не вызываете конструкторы.
компилятор вызывает их в определенных четко определенных контекстах: переменная
определение и преобразование типов, в основном. Компилятор может вызывать только
конструкторы, которые объявлены (включая те, которые неявно
объявлена). Так что если у вас есть пользовательский конструктор (копировать или
в противном случае), и не определяйте конструктор по умолчанию, компилятор не может
вызывать конструктор, кроме случаев, когда у него есть аргументы для вызова
это с.
Подводя итог, я думаю, что ваши вопросы: компилятор предоставит
неявный конструктор копирования, даже если класс определен другим пользователем
конструкторы, при условии, что ни один из этих конструкторов не может считаться копией
Конструкторы. И если вы предоставите пользовательский конструктор копирования,
компилятор не предоставить неявно объявленный конструктор копирования по умолчанию.
http://www.cplusplus.com/articles/y8hv0pDG/
Конструктор копирования по умолчанию существует, если вы его не определили. Так что да, вы можете вызвать конструктор копирования по умолчанию, если вы не определили конструктор копирования, однако если вы определите конструктор копирования в своем классе, вы не сможете вызвать конструктор по умолчанию.
Нет такого понятия, как конструктор копирования по умолчанию. Есть
конструкторы по умолчанию и конструкторы копирования, и они разные
вещи.
Неявно определенный конструктор копирования (который, я думаю, это то, что вы
означает «конструктор копирования по умолчанию») будет копировать нестатические элементы
Тип класса, используя их конструктор копирования, а не их по умолчанию
конструктор. Неявно определенный конструктор копирования используется, когда вы
не определяйте свой собственный конструктор копирования.