C++ конструктор копирования

Трюк заключается в том, что когда вы явно пишете конструктор копирования, компилятор не создает неявных конструкторов копирования. Даже если в нашем коде есть пустой блок, создав собственный конструктор копирования, мы дали компилятору указание, что забираем у него полномочия копировать данные от объекта к объекту и будем крутить и копировать то, что хотим, своими руками.

Поскольку блок пуст, ничего не происходит. Что нам нужно сделать, чтобы созданный нами конструктор копирования заработал и скопировал данные из одного объекта в другой? Нам нужно написать код, который будет выполнять это копирование вместо пустого блока. Попробуйте немного подумать о том, что нужно присвоить. Вы увидите, что теперь присвоение одного объекта другому работает так, как должно. Какие выводы вы можете сделать? Это говорит нам о том, что для копирования данных из одного объекта в другой объект с помощью явно указанного конструктора копирования, вы должны выполнить копирование самостоятельно.

Если бы это был массив, вам пришлось бы выполнять поэлементное копирование каждого элемента массива. То же самое для структур, то же самое для других случаев. Мы хотим скопировать b из объекта, который мы принимаем, в b текущего объекта. Этот материал освещен очень поверхностно, но, возможно, это кому-то поможет.


Навигация

thoughts on “C++ конструктор копирования

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *