Создание объектов. конструктор

Объект— это переменная типа класс. Класс — это абстрактное понятие, шаблон, заготовка для создания объекта. Оперативная память для класса, как и для другого типа, не отводится. Объект существует реально, физически после его создания, то есть он занимает определённую оперативную память.

Объявляется объект одним из следующих способов:

1) имя_класса имя_объекта (параметры);

если конструктор имеет параметры;

2) имя_класса имя_объекта;

если конструктор не имеет параметров или все параметры имеют значения по умолчанию или конструктора нет.

В любом случае, во-первых, создаётся объект и, во-вторых, вызывается конструктор, если он есть и передаются параметры (см. 1)).

Конструктор — это специальная функция, которая служит для инициализации (задания начальных значений) всех (пример 1) или некоторых (пример 2) полей класса. В примере 2 с помощью конструктора задали только размерность массива, а массив определили с помощью функции класса. Теоретически в этой функции разрешается выполнять любые действия, но это делать не рекомендуется. Конструктор имеет следующие особенности:

  • он не имеет никакого типа возвращаемого значения, в том числе void;
  • имя конструктора совпадает с именем класса;
  • для локальных объектов, созданных, как в наших примерах, в main, конструктор вызывается автоматически при объявлении объекта. Благодаря последним двум особенностям конструктор обязательно будет выполнен, так как мы не можем забыть объявить объект, а, значит, вызвать конструктор. В противном случае компилятор напомнит нам об этом.

Конструктор может быть с параметрами или без них. В первом случае число 10 (см. прим. 1) через параметр x передаётся в качестве значения поля a по следующей “цепочке”: 10 – x – a. Аналогично число 2 инициализирует поле b: 2 – y – b. То есть числа 10 и 2 играют роль фактических параметром при вызове специальной функции, которой является конструктор. При вызове методов повторно передавать эти же значения, как это имело место в случае самостоятельных функций, не членов класса, не надо.

Кроме констант с помощью конструктора в класс можно передать переменные (введённые A и B в примере 1) или выражения соответствующего типа.

Если конструктор не имеет параметров, то поля класса можно определить, например, с помощью констант или каким-нибудь другим способом. Например, в примере 1 конструктор может быть таким: FirstCl { a=2; b=5;} Тогда вызывается он так: FirstCl obj; т. е. поля из головной функции не передаются, а определяются с помощью констант в тексте конструктора. Заметим, что при объявлении объекта и одновременном вызове конструктора без параметров пустые круглые скобки не пишем.

Параметры конструктора, как и любой другой функции, могут иметь значения по умолчанию. Например, в первом примере заголовок конструктора может быть таким: FirstCl ( int x=2, int y=5). Его текст не меняется. Тогда объявить объект и вызвать конструктор можно по-разному:

a) FirstCl obj1; //поля получат значения a=2,b=5;

b) FirstCl obj2 (30); // a=30, b=5;

c) FirstCl obj3 (30, 40); // a=30, b=40;

d) нельзя, как и для обычных функций: FirstCl obj4 ( , 40);

Конструктор, как и любая другая функция (см. §7 гл. 3), может быть перегружен, то есть можно записать несколько конструкторов, которые отличаются параметрами. Например, в одном и том же классе можно записать два следующих конструктора:

FirstCl { a=2; b=5;}

FirstCl (int x, int y) { a=x; b=y; };

Тогда объявить объект можно по-разному:

a) FirstCl obj; // поля получат значения 2 и 5;

b) int X,Y;cinXY;FirstCl obj (X, Y);// поля получат значения X,Y.

Урок 65. JavaScript. Объекты. Конструкторы


Читать еще…

Понравилась статья? Поделиться с друзьями: