Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_ робота_5-6_1213.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
129.54 Кб
Скачать

Виклик конструктора й деструктора

Конструктор і деструктор викликаються в програмі автоматично при оголошенні об'єктів класу. Не має значення, чи оголошується об'єкт явно або створюється динамічно за допомогою new.

Виклик того або іншого конструктора залежить від форми опису об'єкта:

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

Якщо в дужках записані параметри, викликається конструктор з параметрами.

Якщо в дужках перебуває ім'я об'єкта, то відбувається виклик конструктора копіювання.

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

Конструктори викликаються в програмі в порядку оголошення об'єктів. Коли оголошується масив об'єктів, конструктор за замовчуванням буде викликаний стільки разів, скільки елементів зазначено в оголошенні масиву.

При оголошенні масиву покажчиків на тип класу або одиничного покажчика ніякі конструктори не викликаються. Вони будуть викликані пізніше при ініціалізації покажчиків оператором new.

Деструктор викликається автоматично при руйнуванні оголошеного по імені об'єкта, тому немає необхідності в явному виклику деструктора для руйнування локального об'єкта або для руйнування об'єктів перед виходом із програми. Деструктор також викликається автоматично, коли за допомогою оператора delete звільняється покажчик на об'єкт класу. Без оператора delete об'єкт зруйнований не буде. Дозволяється і явний виклик деструктора для об'єкта, що виконується, як і виклик будь-якого іншого методу класу.

//Головна функція повинна містити наступний програмний код:

#include "stdafx.h"

#include <iostream>

using namespace std ;

#include "Book.h"

void view ( char*, CBook& ) ;

int main(int argc, char* argv[])

{

cout << "\n rabotaet Lab5_6.cpp " << endl;

CBook book ;

char stroka_vvoda[10];

cout << "Vvedi avtora" << endl;

cin >> stroka_vvoda;

book.setAuthor ( stroka_vvoda ) ;

// book.setAuthor ( "Robert Lafore" ) ;

cout << "\n otrabotal setAuthor pole = " << book.getAuthor() << endl;

book.setTitle ( "Object-Oriented Programming in C++" ) ;

cout << "\n otrabotal setTitle pole = " << book.getTitle() << endl;

book.setYear ( 2004 ) ;

view ( "book", book ) ;

cout << "\n otrabotal view " << endl;

return 0;

}

void view ( char *s, CBook &o )

{

cout << "\nState of object \' " << s << " \'\n" ;

cout << "Author:\t" << o.getAuthor ( ) << endl ;

cout << "Title:\t" << o.getTitle ( ) << endl ;

cout << "Year:\t" << o.getYear ( ) << endl << endl ;

}

  1. Зберегти проект за допомогою команди File Save All.

  2. Виконати програму за допомогою команди Build Execute Lab5_6.exe.

  3. Протестувати програму для різних значень вхідних даних.

  4. Закрити проект за допомогою команди File Close Workspace.

  5. У файлі звіту дати відповіді на наступні питання:

  • Який об’єкт створюється у програмі?

  • Як виводяться значення полів об’єкту?

  • Для чого призначена функція view , які вона має параметри?

  • Які значення повертає функція view?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]