Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 80

Реализация (instantation) — это создание объекта, экземпляра или класса.

Важно понимать, что вы не можете явно вызвать конструктор. Каким же образом используются разные конструкторы? Это происходит при созда­нии, или реализации, объекта или класса. Следующий фрагмент кода создает два экземпляра класса Rect. В первом используется конструктор по умолча­нию, а во втором — конструктор с аргументами:

Rect recti; // вызывается конструктор по умолчанию

Rect rect2(0, 0, 100, 100) // вызывается второй вариант конструктора

Вы можете иметь любое количество конструкторов, но при этом нельзя допускать неоднозначности в списке параметров (как и для перегруженных функций).

Си++ дает возможность инициализировать члены-данные класса при помощи списка инициализаторов (initializer list).

В следующем примере показан способ инициализации членов-данных класса. Я хочу сразу привести пример, а не пытаться объяснять использо­вание списка инициализаторов. Давайте возьмем два конструктора для класса Rect и инициализируем члены-данные при помощи списка, а не в теле функ­ции, как раньше. Вот как это выглядит:

Обратите внимание на два момента. Во-первых, список инициализаторов начинается с двоеточия. (Двоеточие стоит после заголовка функции, поэтому вы могли его не заметить.) Во-вторых, переменные в списке разделяются запятыми, но за последней переменной запятая не ставится. Несоблюдение этих правил приведет к выдаче сообщения об ошибке при компиляции.

На третий день я говорил о ссылках. Вы можете включать ссылки в число членов-данных класса, но инициализация ссылок возможна только через список, и никак иначе. Вот пример:

Попытка инициализировать ссылку в каком-либо другом месте приведет к ошибке при компиляции.

Web-дизайн (с) 2010 - 2017 All rights reserved