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


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

{
int a, b;
public:
Sinf(int x, int y); // Конструктор
};
Sinf:: Sinf( int x, int y): a(x), b(y);
{
cout<< “Конструктор ишлади \n”;
}
//…
Келтирилган программа бўлагида конструктор бажарадиган иш олдинги мисолдаги конструктор иши билан эквивалент.
Албатта, синф элементларини инициализация қилишнинг қайси шаклини қўллаш программа тузувчига боғлиқ. Бироқ, шундай ҳолатлар бўладики, унда элементларни инициализациялаш рўйхатидан фойдаланмасликнинг иложи йўқ: синфнинг берилганлар–константаларига ва кўрсаткичларига бошланғич қиймат беришда; синф аъзоси объект бўлганда ва бу объект конструктори бир ёки бир нечта параметрларга қиймат беришни талаб қилган ҳолларда.
Келишув бўйича конструкторларни ишлатишда коллизиядан (бир нарсани икки хил тушунишдан) қочиш керак, яъни синфда бир нечта конструктор бўлганда компилятор қачон уларнинг қайси бири чақирилишини аниқ билиши керак. Қуйидаги мисолда бу ҳолат билан боғлиқ хато кўрсатилган.
class S
{
public:
S(); // Келишув бўйича конструктор
S(int i=0); // Келишув бўйича конструктор ўрнида
//ишлатилиши мумкин бўлган конструктор
};
int main()
{
S ob1(10); // S::S(int) конструктори ишлатилади.
S ob2; // Нотўғри. S::S(int) ёки S::S()
// конструкторларининг қайси бири
// чақирилиши номаълум.
Бу зиддиятни ҳал қилиш йўли – бу синф эълонидан келишув бўйича конструкторни ўчиришдир.


Нусхалаш конструктори
Нусхалаш конструктори синф объектини яратади ва шу синфнинг мавжуд объектларидан берилганларни (уларнинг қийматини) нусхасини олади. Шу сабабли у синф объектига константа кўрсаткич (const S&) ёки оддийгина кўрсаткич (S&) бўлган ягона параметрга эга бўлади. Параметрларнинг биринчисини ишлатиш маъқул ҳисобланади, у константа объектларни нусхалаш имконини беради.
Қуйидаги мисолда нусхалаш конструкторини ишлатиш кўрсатилган.

Download 0.58 Mb.

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




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