|
Программирование >> Программирование на языке c++
Третий пример показывает, как можно выполнить инициализацию смеси. В этом случае инициализирующее (начальное) значение будет присвоено первому объявленному компоненту смеси. #include <iostream.h> union и { int а; float b; char с; } uu = { 100 }; void main(void) { Uu = {33}; cout uu.a \f u.a endl; 100 33 Последний пример показывает использование смесей, содержащих компоненты-функции. #include <iostream.h> union и { int а; float b; и (int A) : a(A) {} это конструктор void demoO { cout a = a ;\n ; } функция void main(void) { Uu(5); u.demoO; Результат: a = 5 Заметим, что анонимные смеси не могут иметь компоненты-функции. В заключение перечислим основные свойства и правила использования структур и смесей: в языке С++ структуру и смесь можно использовать так же, как и класс; все компоненты структуры имеют атрибут public по умолчанию; разрешается описывать структуру без имени, например: f Struct { .. . } sl,s2,*s,......; в структуре нельзя объявить ту же структуру, однако можно объявить указатель на нее; размер смеси равен размеру ее наибольшего компонента-данного; в некоторое заданное время только один компонент-данное смеси можно использовать; > смесь без имени и без списка описываемых объектов называется анонимной смесью; доступ к компонентам анонимной смеси осуществляется по их именам; глобальные анонимные смеси должны быть объявлены статическими; анонимные смеси не могут иметь компоненты-функции; анонимные смеси не мог)л: иметь внешнюю компоновку; компоненты смесей нельзя специфицировать как private, public или protected. Всегда все компоненты смесей имеют атрибут public; смеси можно инициализировать, однако соответствующее значение будет всегда присвоено первому объявленному компоненту. 3.12. Создание и уничтожение объектов Если класс имеет конструктор, то этот конструктор вызывается всегда, когда создается объект этого класса. Если класс имеет деструктор, то этот деструктор вызывается всегда, когда объект этого класса разрушается (уничтожается). Каждый объект имеет некоторое время существования (время жизни). Это время определяется тем, где создан объект (в какой области памяти он создан) и как создан объект (каким способом он создан). Объекты могут быть созданы в следующих формах: глобальные объекты. Создаются в начале выполняемой программы и разрушаются при ее завершении (см. пример 1, приведенный ниже); автоматические объекты. Создаются, когда их объявление встречается в выполняемой программе и разрушаются, когда блок программы, в котором они были объявлены, разрушается или удаляется из памяти (см. пример 2 ниже); статические объекты. Создаются один раз при запуске программы, к которой они относятся, и разрушаются тоже один раз при завершении выполнения программы (см. примеры 3,4); > объекты в динамически выделяемой области памяти. Создаются при выделении памяти (обычно с помощью встроенного в язык С++ оператора new) и разрушаются при освобождении памяти (обычно с помощью встроенного в язык С++ оператора delete) (см. пример 5); объекты компоненты классов. Создаются при построении объекта класса, в котором они описаны, и разрушаются при разрушении объекта класса, в котором они описаны (см. пример 6); объекты, которые являются элементами массивов (т. е. в этом случае строится массив объектов одного типа) (см. пример 7). Поясним основные правила создания и разрушения различных объектов в соответствии с описанными выше способами. Глобальные объекты создаются в начале выполнения программы и разрушаются при завершении ее выполнения. Последовательность создания объектов определяется последовательностью их объявления. Разрушение объектов производится в обратном порядке. Так, если объекты созданы в последовательности: 01, 02, 03, то порядок их разрушения будет таким: 03, 02,01. Автоматические объекты создаются тогда, когда объекты объявляются как некоторые локальные переменные в блоке (например, в функции). Рассмотрим функцию: void function(. . .) { my ciass X; my class Y; .......... }
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |