русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Деструктори


Дата додавання: 2014-04-22; переглядів: 879.


Конструктор викликається при створенні об’єкту. Як ми вже знаємо з вивчення об’єктних можливостей TurboPascal, існує також інша підпрограма (у випадку С++ функція), яка автоматично викликається при знищенні об’єкта і називається деструктором. Ім’я деструктора співпадає з іменем конструктора (і класу), тільки починається знаком ~

class foo

{private:

int data;

public:

Foo(): data(0) //конструктор

{ }

~Foo() //деструктор

{ }

};

Як і конструктори, деструктори не повертають значення. Ще вони не мають аргументів. Найпоширеніше використання деструкторів – вивільнення пам’яті, виділеної конструктором при створенні об’єкту, отже, найкраще їх використовувати при роботі з динамічними об’єктами.

 

Об’єкти в якості аргументів функції

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

Далі приведений лістінг програми 9.5

#include <iostream.h>

#include <conio.h>

#include <bios.h>

class Distance

{private:

int feet;

float inches;

public:

 

Distance():feet(0),inches(0.0) //конструктор без аргументів

{ }

 

//конструктор з 2 аргументами

Distance(int ft,float in):feet(ft),inches(in)

{ }

 

void getdist()

{cout <<”\nВведіть число футів “; cin >>feet;

cout << “Дюймів “; cin>>inches;

}

 

void showdist()

{cout <<feet << “\’ “<< inches <<”\’’”;}

 

void add_dist(Distance,Distance); //прототип

};

//dodavanna d2 i d3

void Distance::add_dist(Distance d2,Distance d3)

{

inches=d2.inches+d3.inches;

feet=0;

if(inches>=12.0)

{inches-=12.0;

feet++;}

feet+=d2.feet+d3.feet;

}

 

int main()

{

clrscr();

Distance dist1,dist3;

Distance dist2(11,6.25); //визначення та ініціалізація

dist1.getdist();

dist3.add_dist(dist1,dist2);

cout <<”\ndist1=”;dist1.showdist();

cout << “\ndist2=”;dist2.showdist();

cout << “\ndist3=”;dist3.showdist();

cout <<endl;

bioskey(0);

return 0;

}

Програма 9.5


<== попередня лекція | наступна лекція ==>
Список ініціалізації | Перезавантажені конструктори


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн