Бирлашмалар (union) Бирлашмалар худди структураларга ўхшаш тип хисобланади, фарқи шуки, бирлашмаларда бир вақтнинг ўзида фақат унинг битта элементигагина мурожаат қилиш мумкин. Бирлашма типи қуйидагича аниқланади:
union { 1-элементни тавсифлаш; ... n-элементни тавсифлаш; }; Бирлашмаларнинг асосий хусусияти шуки, эълон қилинган хар бир элемент учун хотиранинг битта худуди ажратилади, яъни улар бир-бирини қоплайди. Бу ерда хотиранинг шу қисмига исталган элемент билан мурожаат қилса бўлади, лекин бунинг учун элемент шундай танланиши керакки, олинадиган натижа маънога эга бўлиши керак. Бирлашманинг элементига мурожаат худди структура элементига мурожаат каби амалга оширилади. Бирлашмалар қўлланиладиган хотира объектини инициализация қилиш мақсадида ишлатилади, агарда хар бир мурожаат вақтида бир қанча объектлардан фақат биттаси фаоллаштирилса.
Бирлашма типидаги ўзгарувчи учун ажратиладиган хотира хажми ушбу типнинг энг узун элементи учун кетадиган хотира хажми билан аниқланади. Кичик узунликдаги элемент ишлатилганда, бирлашма типидаги ўзгарувчи учун ажратилган хотира сохасининг айрим қисми ишлатилмайди. Бирлашманинг барча элементи учун хотиранинг битта адресдан бошланувчи битта сохаси ажратилади. Масалан:
union { char fio[30]; char adres[80]; int yoshi; int telefon; } inform;
union { int ax; char al[2]; } ua; Бирлашма типидаги inform объектини ишлатганда қиймат қабул қилган элементинигина қайта ишлаш мумкин, яъни масалан inform.fio элементига қиймат берилгандан кейин бошқа элементларга мурожаат маънога эга эмас. ua бирлашмаси al элементининг кичик ua.al[0] ва катта ua.al[1] байтларига алохида мурожаат қилиш мумкин. Бирлашма типига оид мисол кўриб чиқамиз.
#include using namespace std; int main() { union Guruh{ int n; int m; }; Guruh w; w.n=12;// w бирлашмасининг n элементига қиймат бериш w.m=23; // w бирлашмасининг m элементига қиймат бериш cout< system("pause"); } Класслар Класс– бу дастурчи томонидан ихтиёрий киритилган мавжуд типлар асосида яратилган структураланган тип хисобланади. Класслар локал ва глобал ўзгарувчилар ва улар устида амал бажарадиган функциялар тўпламидан иборат бўлиши мумкин. Класслар қуйидагича тасвирланади:
сlass klass_nomi{ ; }; Классларга оид мисол:
#include using namespace std; class daraxt { public: unsigned int uzunligi ; unsigned int yoshi; int o_sish(int i){ i++; return i; }; }; int main() { int k=2; daraxt olma_daraxt; olma_daraxt.uzunligi=5; olma_daraxt.yoshi=7; cout< system("pause"); }