Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Конструктори




План

  1. Конструктори
  2. Списки ініціалізаторів
  3. Деструктори
  4. Члени-дані
  5. Функції-члени
  6. Класи в C++ Builder

Класи в С++ мають спеціальну функцію, що називається конструктором.

Конструктор (constructor) – це функція, яка автоматично викликається при створенні об’єкта класу.

Конструктор використовується для ініціалізації змінних-членів класу, виділення необхідної пам’яті та виконання інших дій, необхідних перед початком використання класу. Класи, наведені в прикладах, не містять явно визначеного конструктора. В таких випадках компілятор С++Builder створює конструктор за замовчуванням (default constructor). Для простих класів це цілком допустимо, але зазвичай конструктори вставляють у класи будь-якої значущості. Ім’я конструктора повинне співпадати з ім’ям класу. Це слугує характерною ознакою конструктора. Давайте додамо оголошення конструктора в клас Avto:

class Avto

{

public:

Avto(); // конструктор

bool haveKey;

bool Start();

void ShutDown();

protected:

void StartUp();

private:

void StartSystem();

bool started;

int speed;

};

Зверніть увагу, що для конструктора не вказаний тип значення, що повертається. Справа у тім, що конструктор не може повертати ніякого значення. Якщо ви спробуєте вказати тип значення, що повертається, компілятор видасть повідомлення про помилку.

Клас може мати більше одного конструктора. Це можливе завдяки перевантаженню функцій. Наприклад, можна визначити конструктор без аргументів (конструктор за замовчуванням) та конструктор з параметрами, що приймає один чи кілька аргументів для ініціалізації членів-даних.

Наприклад, клас Rect міг би мати два конструктора: конструктор за замовчуванням буде встановлювати всі члени-дані в нуль, а інший конструктор дозволить ініціалізувати члени-дані шляхом передачі конструктору аргументів. Оголошення класу Rect могло б виглядати так:

class Rect

{

public:

Rect();

Rect (int _left,int _top,int _bottom,int _right);

int GetWidth();

int GetHeigth();

void SetRect(int _left,int _top,int _bottom,int _right);

private:

int left;

int top;

int bottom;

int right;

};

Конструктори можна визначити наступним чином:

Rect::Rect()

{

left=0;

top=0;

bottom=0;

right=0;

}

Rect::Rect(int _left, int _top, int _bottom, int _right)

{

left=_left;

top=_top;

bottom=_bottom;

right=_right;

}

Перший конструктор є конструктором за замовчуванням, оскільки він не має аргументів. Його задача – просто ініціалізувати нулем всі члени-дані. Другий конструктор є конструктором з параметрами – він приймає передані йому значення й присвоює їх відповідним членам-даним. Імена змінних у списку параметрів містять знак підкреслення для того, щоб відрізнити їх від імен членів-даних.

Пам’ятайте, що не ініціалізовані змінні містять випадкові значення. Для безпеки слід надавати змінним-членам класу які-небудь початкові значення.

Важливо пам’ятати, що ви не можете явно викликати конструктор. Це відбувається при створенні, чи реалізації, об’єкта класу.

Реалізація (instantion) – це створення об’єкта, екземпляра класу.

Яким же чином використовуються різні конструктори? Це визначає реалізація об’єкта класу. Створимо два екземпляри класу Rect:

Rect r1; // викликається конструктор за замовчуванням

Rect r2(0,0,100,100); // викликається конструктор з аргументами

2. Списки ініціалізаторів

 

С++ дає можливість ініціалізовувати члени-дані класу за допомогою списка ініціалізаторів (initializer list).

Візьмемо два конструктори для класу Rect та ініціалізуємо члени-дані за допомогою списка, а не в тілі функції, як раніше. Ось як це виглядатиме:

Rect::Rect():

Left(0),

Top(0),

Bottom(0),

Right(0) {}

Rect::Rect(int _left, int _top, int _bottom, int _right):

Left(_left), Top(_top), Bottom(_bottom), Right(_right) {}

Зверніть увагу, що список ініціалізаторів починається з двокрапки. А змінні в списку розділяються комами.




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 672; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.