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

Конструктор - преобразование

Cтраница 1


Конструктор преобразования const char преобразует строку во временный объект класса String, с которым затем и выполняется описанная перегруженная операция сцепления. C может выполнять такие преобразования, но только на глубину одного уровня. C может также выполнять неявное определенное компилятором преобразование между встроенными типами перед выполнением преобразования между встроенными типами и классами.  [1]

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

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

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

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

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

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

Функция-элемент конструктор преобразования вычисляет длину строки символов и присваивает эту длину закрытому элементу данных length, использует new для присваивания значения указателя на выделенный необходимый объем памяти закрытому элементу данных sPtr, применяет assert для проверки успешного выполнения new и, если все нормально, использует strcpy для копирования строки символов в объект.  [8]

Такой конструктор преобразования позволяет инициализировать объекты класса CCurrency следующим образом.  [9]

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

11 Определение класса String ( часть 1 из 7. [11]

Наличие такого конструктора преобразования означает, что нет необходимости предусматривать специальную операцию присваивания для присвоения объекту String строки символов. Компилятор автоматически вызывает конструктор преобразования, чтобы создать временный объект String, содержащий указанную строку. После этого вызывается перегруженная операция присваивания, чтобы присвоить временный объект String другому объекту String. Обратите внимание, что когда C использует конструктор преобразования таким образом, он может применить лишь один конструктор, чтобы попробовать удовлетворить потребности перегруженной операции присваивания. Наоборот, невозможно реализовать такое присваивание посредством выполнения ряда неявных преобразований, определенных пользователем. Конструктор преобразования вычисляет длину строки символов и присваивает это значение закрытому элементу данных length; использует new, чтобы присвоить указатель на выделенную под строку память закрытому элементу данных sPtr; вызывает assert для проверки успешности вызова new и, если память выделена, вызывает strcpy, чтобы скопировать строку символов в объект.  [12]

При применении конструктора преобразования для выполнения неявного преобразования типов C может использовать неявный вызов только одного конструктора, чтобы попытаться удовлетворить требование другой перегруженной операции. Невозможно удовлетворять требования перегруженных операций путем выполнения последовательности неявных определенных пользователем преобразований.  [13]

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

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



Страницы:      1    2    3