Конструктор - копия - Большая Энциклопедия Нефти и Газа, статья, страница 1
Идиот - это член большого и могущественного племени, влияние которого на человечество во все времена было подавляющим и руководящим. Законы Мерфи (еще...)

Конструктор - копия

Cтраница 1


Конструктор копии - функция-элемент Array - увеличивает значение счетчика arrayCount; копирует из массива значение size, использующееся для инициализации массива, в элемент данных size; использует new для получения свободного места под хранение внутреннего представления этого массива и присваивает ptr значение указателя, возвращаемого new; использует assert для проверки успешности вызова new; использует цикл for для копирования всех элементов массива-инициализатора в этот массив. Важно отметить, что, если конструктор копии просто копирует ptr объекта-источника в ptr создаваемой копии, то оба объекта могут указывать на одну и ту же область динамически размещаемой памяти. Первый вызов деструктора должен был бы после этого очистить динамически выделенную память, и другие объекты, на которые ссылается ptr, стали бы неопределенными. Такая ситуация чаще всего вызывает серьезную ошибку при выполнении программы.  [1]

Конструктор копии работает аналогично конструктору преобразования, за исключением того, что он просто копирует элемент length из исходного объекта String в объект-адресат String. Заметим, что конструктор копии выделяет новую область памяти для внутреннего представления строки символов объекта-адресата. Если бы он просто копировал sPtr в исходном объекте в sPtr объекта-адресата, то оба объекта указывали бы на одну и ту же динамически распределенную область памяти. Выполнение первого же деструктора в дальнейшем уничтожило бы динамически выделенную область памяти и указатели ptr остальных объектов оказались бы неопределенными, что привело бы к ситуации, способной вызвать серьезную ошибку выполнения.  [2]

Конструктор копии используется, чтобы в качестве начальных значений элементов одного объекта задать значения элементов другого объекта того же класса. Конструктор копии вызывается всякий раз, когда возникает необходимость в копировании объекта, например, при вызове по значению, когда объект возвращается из вызванной функции, или при инициализации объекта, который должен быть копией другого объекта того же самого класса. Конструкторы копии должны получать свои параметры по ссылке.  [3]

4 Тестер для проверки класса String ( часть 5 из 7. [4]

Конструктор копии работает аналогично конструктору преобразования за исключением того, что он просто копирует элемент length из исходного объекта класса String в объект-копию String. Обратите внимание, что конструктор копии заново выделяет память для внутренней строки символов объекта-копии. Если бы он просто скопировал sPtr из исходного объекта в sPtr объекта-копии, то оба объекта указывали бы на ту же самую область памяти. При первом вызове деструктора динамически выделенная память была бы очищена и sPtr другого объекта стал бы неопределенным.  [5]

Конструктор копии инициализирует объект, используя другой объект того же класса. Конструктор копии вызывается также всякий раз, когда необходимо копирование объекта: при вызове по значению и при возврате объекта из вызванной функции.  [6]

Функция-элемент конструктор копии класса Array увеличивает на 1 аг - rayCount, копирует элемент size массива, использованного для инициализации, в элемент данных size нового объекта, с помощью new выделяет память для размещения внутреннего представления массива и присваивает указатель, возвращенный операцией new, элементу данных ptr, применяет assert для проверки успешного завершения new, затем использует цикл for, чтобы скопировать все элементы инициирующего массива в новый массив.  [7]

Заметим, что конструктор копии должен использовать вызов по ссылке, а не вызов по значению. В противном случае вызов конструктора копии приведет к бесконечной рекурсии, потому что при вызове по значению должна быть создана копия объекта, передаваемого конструктору копии, что приводит снова к вызову конструктора копии.  [8]

Деструктор, операция присваивания и конструктор копии класса обычно реализуются как единая группа.  [9]

Конструктор, деструктор, перегруженную операцию присваивания и конструктор копии обычно применяют совместно для класса, который использует динамически распределенную память.  [10]

Конструктор, деструктор, перегруженную операцию присваивания и конструктор копии обычно применяют совместно для класса, который использует динамически распределенную память.  [11]

Чтобы перехватить исключение, обработчик должен иметь доступ к конструктору копии сгенерированного объекта.  [12]

Можно предохранить объекты класса от копирования; для этого просто делают закрытыми и перегруженную операцию присваивания, и конструктор копии.  [13]

Проанализировав работу этой программы, можно сделать вывод, что при вызове функции FunctionOneO делается два обращения к конструктору копии и два обращения к деструктору, поскольку объект в эту функцию передается как значение, в то время как при вызове функции FunctionTwoO подобных обращений не делается.  [14]

Конструктор копии используется, чтобы в качестве начальных значений элементов одного объекта задать значения элементов другого объекта того же класса. Конструктор копии вызывается всякий раз, когда возникает необходимость в копировании объекта, например, при вызове по значению, когда объект возвращается из вызванной функции, или при инициализации объекта, который должен быть копией другого объекта того же самого класса. Конструкторы копии должны получать свои параметры по ссылке.  [15]



Страницы:      1    2