Объектга йўналтирилган программалаш


Download 0.58 Mb.
bet7/71
Sana08.05.2023
Hajmi0.58 Mb.
#1444224
TuriПрограмма
1   2   3   4   5   6   7   8   9   10   ...   71
Bog'liq
С ОЙП

#include
class Sinf;
{
int var;
public:
Sinf(); // Конструктор
~Sinf(); // Деструктор
void Chop_etish_var();
Sinf::Sinf()
{
cout<< “Конструктор ишлади \n”;
var=0;
}
Sinf::~Sinf( )
{
cout<< “Деструктор ишлади \n”; }
void Sinf::Chop_etish_var( )
{
cout<
}


int main()
{
Sinf ob;
ob.Chop_Etish_var();
//…
return 0;
}
Деструктор объект ўчирилишида чақирилади. Глобал объектлар программа тугашида ўчирилади. Локал объектлар – уларни кўриш соҳасидан чиқишда ўчирилади.
Шуни алоҳида қайд этиш керакки, конструктор ва деструкторларга кўрсаткичлар ҳосил қилиш мумкин эмас.
Агар синф ўзгарувчиларини инициализация қилиш зарур бўлса, параметрли конструктор ишлатилди. Юқорида келтирилган мисолга ўзгартириш киритамиз.
#include
class Sinf
{
int a, b;
public:
Sinf(int x, int y); // Конструктор
~Sinf(); // Деструктор
void Chop_etish_var();
}
Sinf::Sinf(int x, int y)
{
cout<< “Конструктор ишлади \n”;
a=x; b=y;
}
Sinf::~Sinf()
{
cout<< “Деструктор ишлади \n”;
}


void Sinf::Chop_etish_var()
{
cout<
}
int main()
{
Sinf ob(5,10);
ob.Chop_Etish_var();
//…
return 0;
}
Бу ерда ob объекти эълонида конструкторга узатилган қийматлар синф таркибидаги а ва b ёпиқ ўзгарувчиларни инициализация қилишда ишлатилади.
Параметрли конструкторга қиймат узатиш синтаксиси қуйидаги ифоданинг қисқарган шакли ҳисобланади:
Sinf ob(5,10); “
ифодаси
Sinf(5,10);“
ифодаси билан эквивалент. Аксарият ҳолларда қисқартирилган шакл ишлатилади.
Конструктордан фарқли равишда деструктор параметрга эга бўлиши мумкин эмас, чунки ўчирилаётган объект ўзгарувчиларига қиймат бериш маънога эга эмас.
Конструктор учун аниқланган бир нечта қоидаларни келтирамиз:

  • конструктор учун қайтарилувчи қиймат тури кўрсатилмайди;

  • конструктор қиймат қайтармайди;

  • конструктор ворислик билан ўтмайди;

  • конструктор const, volatile, static ёки virtual модификаторлари билан эълон қилинмайди.

Агар синф аниқланишида конструктор эълон қилинмаса, компилятор ўзи келишув бўйича параметрсиз конструкторни ҳосил қилади.
Деструктор учун қуйидаги қоидалар аниқланган:

  • деструктор параметрларга ега бўлиши мумкин эмас;

  • деструктор қиймат қайтармайди;

  • деструктор ворислик билан ўтмайди;

  • синф биттадан ортиқ деструкторга эга бўлиши мумкин эмас;

  • деструктор const, volatile, static ёки virtual модификаторлари билан эълон қилинмайди.

Агар синфда деструктор эълон қилинмаса, компилятор ўзи келишув бўйича конструкторни ҳосил қилади.
Одатда синф берилганлари-аъзолари конструктор танасида инициализацияланади. Лекин инициализациянинг бошқа усул билан – элементларни инициализациялаш рўйхати орқали амалга ошириш мумкин. Элементларни инициализациялаш рўйхати функция сарлавҳаси аниқланишидан кейин икки нуқта (‘:’) кейин жойлашади ва унда вергул билан ажратилган ҳолда берилганлар-аъзолар ва таянч синфлар ёзилади. Ҳар бир элемент учун қавс ичида инициализацияда ишлатиладиган бир ёки бир нечта параметрлар кўрсатилади. Қуйидаги мисолда элементларни инициализациялаш рўйхати орқали синф ўзгарувчиларини инициализация қилиш кўрсатилган.
class Sinf

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling