Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет116/642
Дата30.03.2022
өлшемі3,66 Mb.
#29231
түріПрограмма
1   ...   112   113   114   115   116   117   118   119   ...   642
#include  

int main(){


71

enum paytype {CARD, CHECK}; 

paytype ptype; 

union payment{ 

char card[25]; 

long check; 

} info;

/* info жəне ptype мəндерін беру */ 

switch (ptype){

case CARD: cout << "Карта арқылы төлеу: " 

                << info.card; break; 

case CHECK: cout << "Чек арқылы төлеу: " 

                 << info.check; break;



return 0;

}

Біріктірмелерді құрылым өрістері ретінде жиі қолданады, мұндайда 

құрылымға əрбір мезетте біріктірменің қай элементі қолданылатынын 

анықтайтын қосымша өріс енгізген ыңғайлы. Біріктірменің атын көрсетпеуге 

болады, бұл мүмкіндік оның өрістеріне тікелей қол жеткізуге (пайдалануға) 

болатынын білдіреді:



#include  

int main(){

enum paytype {CARD, CHECK}; 

struct{

paytype ptype; 

union{

char card[25]; 

long check;

};

} info;

... /* info мəнін беру */ 

switch (info.ptype){

case CARD: cout << "Карта арқылы төлеу: " 

                << info.card; break;

case CHECK: cout << "Чек арқылы төлеу: " 

                 << info.check; break;



return 0;

}

Сонымен қатар, біріктірмелер бір биттік бейнелеуді əртүрлі интерпретация-

лау үшін де қолданылады (бірақ, мұндайда типтерді айқын түрде түрлендіруді 

қолданған жөн). Мысал ретінде биттік өрістерден тұратын құрылымды 

қарастырамыз:



72

struct Options{ 

bool centerX:1; 

bool centerY:1; 

unsigned int shadow: 2; 

unsigned int palette: 4;

};

union {

unsigned char ch;

Options bit; 

}option = {0xC4}; 

cout << option.bit.palette; 

option.ch & = 0xF0; // маска қолдану

Құрылымдармен салыстырғанда біріктірмелерге бірқатар шектеулер 

қойылады. Олардың кейбіреуінің мағынасы кейін түсінкті болады:

□  біріктірме тек алғашқы элементінің мəні арқылы инициалдана алады;

□  біріктірме құрамында биттік өрістердің болуы мүмкін емес;

□  біріктірменің құрамында виртуалды əдістердің, конструкторлардың, 

деструкторлардың жəне меншіктеу операциясының болуы да мүмкін 

емес;


□  біріктірме кластар иерархиясына кіре алмайды.


73



Достарыңызбен бөлісу:
1   ...   112   113   114   115   116   117   118   119   ...   642




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет