8.6.2 Объекты Классов

8.6.2 Объекты Классов

Объект с закрытыми членами не может быть инициализован списком инициализаторов; это же относится к объекту объединние. Объект класса с конструктором должен инициализироваться. Если класс имеет конструктор, не получающий параметров, то этот конструктор используется для объектов, которые явно не инициализированы. Список параметров для конструктора можно добавлять к имени в описании или к типу в выражении new. Слдующие инициализации все дают одно и тоже значение (#8.4): struct complex (*

float re; float im; complex (float r,float i = 0) (* re=r; im=i; *) *);

complex zz1(1,0); complex zz2(1); complex* zp1 = new complex (1,0); complex* zp1 = new complex (1);

Объекты класса могут также инициализироваться с помощью явного использования операции =. Например:

complex zz3 = complex (1,0); complex zz4 = complex (1); complex zz5 = 1; complex zz6 = zz3;

Если есть конструктор, получающий ссылку на объект свого собственного класса, то он будет вызываться при инициалзации объекта другим объектом этого класса, но не при иницилизации объекта конструктором.

Объект может быть членом составного объекта только (1) если класс объекта не имеет конструктора, или (2) если его конструкторы не имеют параметров, или (3) если составной обект является классом с конструктором, который задает список инициализации члена (см. #10). В случае 2 конструктор вызывется при создании составного объекта. Если составной объект является классом (но не тогда, когда он является вектором) для вызова конструктора могут использоваться параметры по умолчанию. Если член составного объекта является членом класа с деструкторами, то этот деструктор вызывается при уничтжении составного объекта.

Конструкторы для нелокальных статических объектов вызваются в порядке их появления в файле; деструкторы для вызываются в обратном порядке. Вызывается ли конструктор или деструктор для локального статического объекта в случае если функция, в которой объект описан, не вызывается, не определно. Если конструктор для локального статического объекта взывается, то он вызывается после конструкторов для глобальных объектов, лексически ему предшествующих. Если для локального статического объекта вызывается деструктор, то он вызывается до деструкторов для глобальных объектов, лексически ему прешествующих.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Селекторы классов

Из книги автора

Селекторы классов В таблицах стилей, используемых с HTML-документами, при сопоставлении атрибуту class вы можете использовать точку (.) как альтернативу условному обозначению ~=. Таким образом, два выражения HTML DIV. value и DIV [class ~=value] имеют одинаковый смысл. Значение атрибута


Объекты OS/400 и системные объекты MI

Из книги автора

Объекты OS/400 и системные объекты MI Несколько типов объектов имеются и в OS/400, и в MI. Типы объектов OS/400 перечислены в таблице 5.1. Для сравнения, в таблице 5.2 приведены системные объекты MI. Помните, что в каждой новой версии AS/400 добавляются новые функции и даже новые объекты.


3.3. Природа классов

Из книги автора

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


5.2. Диаграммы классов

Из книги автора

5.2. Диаграммы классов Существенное: классы и отношения между ними Диаграмма классов показывает классы и их отношения, тем самым представляя логический аспект проекта. Отдельная диаграмма классов представляет определенный ракурс структуры классов. На стадии анализа мы


1.3.4. Создание классов

Из книги автора

1.3.4. Создание классов В Ruby есть множество встроенных классов, и вы сами можете определять новые. Для определения нового класса применяется такая конструкция:class ClassName# ...endСамо имя класса - это глобальная константа, поэтому оно должно начинаться с прописной буквы.


Объекты DataSet с множеством таблиц и объекты DataRelation

Из книги автора

Объекты DataSet с множеством таблиц и объекты DataRelation До этого момента во всех примерах данной главы объекты DataSet содержали по одному объекту DataTable. Однако вся мощь несвязного уровня ADO.NET проявляется тогда, когда DataSet содержит множество объектов DataTable. В этом случае вы можете


16. Шаблоны классов

Из книги автора

16. Шаблоны классов В этой главе описывается, как определять и использовать шаблоны классов. Шаблон - это предписание для создания класса, в котором один или несколько типов либо значений параметризованы. Начинающий программист может использовать шаблоны, не понимая


Оболочка из классов для OLE

Из книги автора

Оболочка из классов для OLE Рационализация OLEПеревод А. И. ЛегаловаАнглоязычный оригинал находится на сервере компании Reliable


8.5 Описания Классов

Из книги автора

8.5 Описания Классов Класс есть тип. Его имя становится typedef-имя (см. #8.8), которое может быть использовано даже внутри самого спецификатора класса. Объекты класса состоят из последовтельности членов.спецификатор_класса: заголовок_класса (* список_членов opt *) заголовок_класса


8.6.2 Объекты Классов

Из книги автора

8.6.2 Объекты Классов Объект с закрытыми членами не может быть инициализован списком инициализаторов; это же относится к объекту объединние. Объект класса с конструктором должен инициализироваться. Если класс имеет конструктор, не получающий параметров, то этот


Диаграмма классов

Из книги автора

Диаграмма классов На рисунке приведена диаграмма классов модуля ABCObjects. Класс SpriteABC описан в модуле ABCSprites, однако, приведен на диаграмме как один из


У14.4 Наследование без классов

Из книги автора

У14.4 Наследование без классов В этой лекции были представлены два взгляда на наследование: будучи модулем, класс-наследник предлагает службы своего родителя плюс еще некоторые, будучи типом, он реализует отношение "является" (каждый экземпляр наследника является также