Как реализовать конструктор копирования в C ++?



Понимание конструкторов было для многих загадкой. Эта статья поможет вам прояснить концепцию конструктора копирования в C ++.

Понимание Конструкторы был загадкой для многих. Эта статья поможет вам прояснить концепцию конструктора копирования в C ++. Следующие указатели будут рассмотрены в этой статье,

Итак, приступимс этой статьей о конструкторе копирования в C ++





Конструктор копирования - это конструктор, который инициализирует объект класса, используя другой объект того же класса.

Синтаксис:



У нас есть ключевое слово const, потому что мы хотим сделать значение постоянным и убедиться, что оно не изменяется где-то в коде. Как и конструктор по умолчанию, конструктор копирования также предоставляется компилятором. Это называется конструктором копирования по умолчанию. Конструкторы копирования можно сделать закрытыми. Мы не можем копировать объекты класса, когда делаем конструктор копирования закрытым.

Вот пример кода :

#include с использованием пространства имен std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Здесь вызывается нормальный конструктор test t2 = t1 // Здесь вызывается конструктор копирования cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Вывод:



Конструктор вывода-копирования в C ++ - Edureka

Объяснение

Вышеупомянутая программа представляет собой базовую демонстрацию конструктора копирования. У нас есть тест класса с частным членом данных типа int, называемым x. Затем у нас есть параметризованный конструктор, который присваивает 7 переменным x. У нас есть конструктор копирования, который инстанцирует значение t2 со значением t1. Отправляется адрес t2, который содержит значение t1 и присваивается x. Существует функция get, которая возвращает значение x.

класс сканера в примере java

Основная функция имеет объект класса test с именем t1. С этим объектом связано значение, это параметр. У основной функции есть еще один объект класса test, называемый t2. Это инициализируется с помощью переменной t1, и здесь вызывается конструктор копирования. Наконец, функция get вызывается по t1 и t2, чтобы получить значение x.

Типы

Есть два типа конструктора копирования.
⦁ Конструктор мелкого копирования
⦁ Конструктор глубокого копирования

Продолжая эту статью о конструкторе копирования в C ++

Конструктор мелкой копии:

Конструктор поверхностного копирования - это конструктор копирования по умолчанию.

Пример:

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

#include с использованием пространства имен std class test {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Вывод:

Пояснение:

В приведенном выше коде мы используем конструктор копирования по умолчанию, предоставляемый компилятором. Следовательно, это конструктор мелкого копирования.

Продолжая эту статью о конструкторе копирования в C ++

Конструктор глубокой копии

Конструктор глубокого копирования - это определяемый пользователем конструктор копирования.
Например:
Когда два человека должны сделать презентацию, и они оба копируют из одного источника, копии делятся отдельно. Таким образом, когда вы вносите изменения, только другая копия не затрагивается. Это конструктор глубокого копирования. Оба объекта будут указывать на разные ячейки памяти, и изменения в одном из них не повлияют на другой. Память распределяется динамически.

Вот пример кода для: Конструктор глубокого копирования:

#include с использованием пространства имен std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Здесь вызывается нормальный конструктор test t2 = t1 // Здесь вызывается конструктор копирования cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Вывод:

Объяснение

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

На этом мы подошли к концу статьи о «Конструкторе копирования в C ++». Если вы хотите узнать больше, ознакомьтесь с от Edureka, надежной компании онлайн-обучения. Курс обучения и сертификации по Java J2EE и SOA от Edureka разработан, чтобы обучить вас базовым и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.

pl sql учебник для начинающих с примерами

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога, и мы свяжемся с вами как можно скорее.