Ц ++

Типови Ц ++

Типови Ц ++
Ц ++ ентитет је вредност, објекат, референца, функција, пописивач, тип, члан класе, поље бита, структурирано везивање, простор имена, предложак, специјализација шаблона или пакет параметара. Ентитет може бити једног или више типова. Постоје две категорије типова Ц ++: основни и сложени типови. Скалар је аритметички или тип објекта показивача. Основни типови су скалари, док су остали типови ентитета сложени типови.

Меморија рачунара је низ ћелија. Свака ћелија има величину једног бајта, то је обично простор који заузима западноевропски карактер. Величина објекта дата је у бајтовима. Овај чланак даје резиме типова Ц ++. Већ бисте требали имати основно знање о Ц ++-у, како бисте разумели овај чланак.

Садржај чланка

- Фундаментални типови
- Начини конструисања сложених типова
- Низови
- Набрајање
- Класа
- унија
- Референце
- Функције
- Остале врсте једињења
- Закључак

Фундаментални типови

Основни типови су скаларни типови.

боол

Логички тип или боол тип има вредност труе или фалсе за 1 или 0. Тачно или нетачно заузима један бајт.

цхар, непотписани цхар и потписани цхар

Цхар је обично за један западноевропски лик. Обично заузима један бајт. Постоји и непотписани и потписани цхар, који је сваки осмобитни цели број. Непотписани знакови не укључују негативне вредности, док потписани знакови укључују негативне вредности. Вредност коју цхар има, зависи од компајлера и може бити само непотписани цхар. Ове три врсте знакова називају се уским типовима знакова и свака заузима један бајт.

Цео број

Постоји пет непотписаних стандардних целих бројева и пет потписаних стандардних целобројних врста. Пет врста непотписаних цијелих бројева су: „унсигнед цхар“, „унсигнед схорт инт“, „унсигнед инт“, „унсигнед лонг инт“ и „унсигнед лонг лонг инт“. Пет одговарајућих потписаних цијелих бројева су: „потписани знак“, „кратки инт“, „инт“, „дугачки инт“ и „дугачки дуги инт“.

„Непотписани знак“ је исти тип као и уски типови знакова (види горе). „Потписани знак“ је друга врста уских типова знакова (види горе).

Са компајлером г ++, „непотписани знак“ или „потписани знак“ заузима један бајт; „Непотписани кратки инт“ или „кратки инт“ заузима два бајта; „Унсигнед инт“ или „инт“ заузима четири бајта; „Унсигнед лонг инт“ или „лонг инт“ заузима 8 бајтова; „Унсигнед лонг лонг инт“ или „лонг лонг инт“ и даље заузима 8 бајтова (од сада).

цхар16_т, цхар32_т, вцхар_т

Када се ради са западноевропским ликовима, тип цхар је довољан у многим ситуацијама. Међутим, када се ради са кинеским и другим источним језицима, потребан је цхар16_т, или цхар32_т, или вцхар_т. Са г ++ компајлером, цхар16_т заузима два бајта; цхар32_т заузима четири бајта, а вцхар_т такође заузима четири бајта.

Боол, цхар, цхар16_т, цхар32_т, вцхар_т, потписани и непотписани целобројни типови чине још један скуп, који се назива интегрални (целобројни) типови.

У овом тренутку у чланку поменута су два колективна типа: уски типови карактера и интегрални типови.

Типови са покретним зарезом

Претпоставимо да су бројеви 457.000 и 457.230 исто очитавање, мерено помоћу два различита мерна инструмента. 457.230 је прецизније од 457.000 јер је вредност детаљнија (укључује мања места: + 200 плус 30). Број са покретном зарезом је број са разломљеним (децималним) делом. Иако су бројеви у рачунару низ битова, неки бројеви са помичном зарезом су прецизнији од осталих.

Неки мерни инструменти врше мерења у минималним корацима, рецимо 10 јединица. Такав инструмент имао би следећа очитавања: 10, 20, 30, 40, ... 100, 110, 130, 140, ... 200, 210, 220, 230, 240 итд. Иако су бројеви у рачунару низ битова, бројеви са покретном зарезом се крећу у неким минималним корацима (много мањи од 10 јединица).

Ц ++ има три типа са помичном зарезом, а то су: флоат, доубле и лонг доубле. За било који компајлер, доубле мора имати прецизност која је већа од прецизности флоат-а или барем флоат-а; лонг доубле мора имати прецизност већу од оне доубле или барем оне доубле.

Постоји и треће колективно име: аритметички тип. Ово је назив за интегралне типове и типове са покретном зарезом. Имајте на уму да је ово такође назив за све скаларне типове, као што је до сада објашњено.

Са г ++ компајлером, број бајтова за флоат је четири; број бајтова за двоструко је осам; број бајтова за дуги дупли је шеснаест.

воид Типе

Са г ++ компајлером, величина воид типа је један бајт. Бајт званично нема битова, што значи да његова локација има празан садржај.

Начини конструисања сложених типова

Сложени типови нису основни типови. То значи да су сложени типови нескаларни типови. Овај одељак објашњава основе сложених врста.

Низови

Следећи сегмент кода приказује низ интова и низ знакова:

инт аррИнт [] = 1, 2, 3, 4, 5;
цхар аррЦха [] = 'а', 'б', 'ц', 'д', 'е';
цоут << arrInt[2] <<" <Излаз је: 3 ц.

Набрајање

Набрајање је тип, са именованим константама. Размотрите следећи сегмент кода:

енум а = 3, б, ц;
цоут << b <<'\n';

Излаз је: 4. Прва линија сегмента кода је набрајање, а а, б или ц је пописивач.

Класа

Класа је генерализована јединица од које се могу створити (инстанцирати) многи објекти исте генерализоване јединице. Следећи програм приказује класу и два објекта која су из ње направљена. Такав објекат се разликује од скаларног објекта.

#инцлуде
коришћење простора имена стд;
класа ТхеЦла

јавно:
инт нум = 5;
инт фн ()

ретурн нум;

;
инт маин ()

ТхеЦла обј1;
ТхеЦла обј2;
цоут << obj1.num << " << obj2.num <<'\n';
ретурн 0;

Излаз је: 5 5. Име класе је ТхеЦла, а имена два објекта су обј1 и обј2. Забележите тачку и зарез одмах након описа (дефиниције) класе. Обратите пажњу на то како су два објекта инстанцирана у функцији маин ().

Напомена: нум је члан података, а фн је функција члана.

унија

струцт

Структура је попут низа, али уместо да има парове индекс / вредност, она има парове име / вредност. Имена се могу писати било којим редоследом. Следећи програм приказује структуру и употребу:

#инцлуде
коришћење простора имена стд;
струцт ТхеЦла

инт нум = 5;
флоат флт = 2.3;
цхар цх = 'а';
обј1, обј2;
инт маин ()

цоут << obj2.num <<", "<< obj2.flt <<", "<< obj2.ch <<'\n';
ретурн 0;

Излаз је:

5, 2.3, а

Име структуре је ТхеЦла. обј1 и обј2 су два различита објекта структуре.

унија

Следећи програм приказује унију и њену употребу:

#инцлуде
коришћење простора имена стд;
унија ТхеЦла

инт нум;
флоат флт = 2.3;
цхар цх;
обј1, обј2;
инт маин ()

цоут << obj2.flt <<'\n';
ретурн 0;

Резултат је: 2.3. Унија је слична структури. Главна разлика између струцт и унион је у томе што, за струцт, само један члан може истовремено имати вредност (иницијализовану). У горњем програму, члан, флт има вредност 2.3. Сваки од осталих чланова, нум или цх, може имати вредност следећу само ако је вредност за флт напуштена.

Референце

Референца је синоним за идентификатор. Следећи сегмент кода показује како добити референцу на идентификатор:

инт ид = 5;
инт & реф1 = ид;
инт & реф2 = ид;
цоут << id << " << ref1 << " << ref2 <<'\n';

Излаз је: 5 5 5. реф1 и реф2 су синоними за ид.

референца лвалуе и референца рвалуе

Горње референце су референце вредности. Следећи код приказује референцу рвалуе:

инт && реф = 5;
цоут << ref <<'\n';

Излаз је: 5. Ова референца је креирана без идентификовања било које локације у меморији. Да би се то постигло, потребно је удвостручити &, тј.е., &&.

Поинтер

Показивач заправо није Ц ++ ентитет. Међутим, пружа бољу шему за бављење референцама. Следећи код показује како се може створити показивач:

инт птдИд = 5;
инт птдИд = 5;
инт * птрИд;
птрИд = &ptdId;
цоут << *ptrId <<'\n';

Излаз је: 5. Обратите пажњу на разлику у називу између птдИд и птдИд. птдИд је шиљати објект, а птрИд је показивачки објект. & птдИд враћа адресу истакнутог објекта која је додељена птрИд. Да бисте вратили вредност истакнутог објекта, користите * птрИд.

Функције

Основна функција и њен позив

Следећи код приказује основну дефиницију функције и њен позив:

#инцлуде
коришћење простора имена стд;
инт фн (инт број)

цоут<<"seen"<<'\n';
ретурн нум;

инт маин ()

инт рет = фн (5);
цоут << ret <<'\n';
ретурн 0;

Излаз је

дефиниција функције

5

Позив функције је фн (5). Име функције је фн.

Референца и показивач на функцију

& фн враћа адресу у меморију функције чије је име фн. Следећа изјава декларише показивач на функцију:

инт (* фунц) ();

Овде је функц назив показивача на функцију. Први пар заграда разликује овај показивач функције од показивача скаларног објекта. Фунц може бити направљен да држи адресу функције идентификоване фн, како следи:

фунц = &fn;

Следећи програм активира референцу функције и показивач:

#инцлуде
коришћење простора имена стд;
инт фн (инт број)

/ * неке изјаве * /
ретурн нум;

инт маин ()

инт (* фунц) (инт);
фунц = &fn;
инт рет = фунц (5);
цоут << ret <<'\n';
ретурн 0;

Излаз је: 5. Имајте на уму да и фн и фунц имају параметар инт у декларацији.

Остале врсте једињења

Горе наведени основни типови једињења су сами по себи сложени. Такође се користе за конструкцију разрађених сложених типова.

типедеф

Резервисана реч типедеф користи се за замену низа типова једним именом (за низ). Следећи сегмент кода то илуструје:

типедеф унсигнед лонг инт ИдуИЛ;

ИдуИЛ миИнт = 555555555555555555;
цоут << myInt <<'\n';

Излаз је 555555555555555555. У коду је ИдуИЛ постао тип који означава "унсигнед лонг инт".

Струцтуред Биндинг

Структурирано везивање је карактеристика која омогућава давање имена подобјектима. Следећи код то илуструје за низ:

инт арр [3] = 1, 2, 3;
аутоматски [к, и, з] (преса);
цоут << x <<"<< y <<"<< z <<'\n';

Излаз је 1 2 3. Дакле, вредности: 1, 2, 3 су добиле имена, к, и, з. Забележите употребу и положај резервисане речи, ауто. Такође имајте на уму употребу угластих заграда.

Бит-Фиелд

Сећање је низ ћелија. Свака ћелија узима бајт. Такође, сваки бајт се састоји од осам битова. Може се поставити и променити група битова, не нужно осам битова. Таква група се назива бит-поље. Те групе би лежале једна поред друге. Ако групе неће чинити тип, рецимо 16 битова за кратки инт, додају се битови за попуњавање. Следећи код то илуструје структуром:

струцт Датум

непотписани кратки вкДаи: 3; // 3 бита
непотписани кратки дан: 6; // 6 бита
непотписани кратки пон: 5; // 5 бита
непотписано кратко год: 8; // 8 битова за двоцифрену годину
дте;
дте.вкДаи = 1; дте.понедјељак = 2; дте.пон = 2; дте.год = 21;
цоут << dte.mon <<'/'<< dte.monDay <<'/'<< dte.yr <<'\n';

Излаз је: 2/2/21. Укупан број битова за вкДаи, МонДаи и мон је 3 + 6 + 5 = 14. Дакле, додала би се два бита за попуњавање да би се створило 16 битова за кратки цели број од 2 бајта (16 бита). Следећих 8 битова започиње следећи кратки инт, који се затим попуњава са 8 битова за попуњавање.

Напомена: Избегавајте коришћење бит-поља; користите га само за истраживање.

Простор имена

Простор имена је скуп имена, који не би требало да буде у супротности са истим именима других скупова имена. Следећи програм илуструје употребу истих имена из два различита именска простора, примењена у простору имена маин () функције:

#инцлуде
коришћење простора имена стд;
простор имена НС1

инт миИнт = 8;
флоат флт;

простор имена НС2

инт миИнт = 9;
флоат флт;

инт маин ()

цоут << NS1::myInt << '\n';
цоут << NS2::myInt << '\n';
НС1 :: флт = 2.5;
НС2 :: флт = 4.8;
цоут << NS1::flt << '\n';
цоут << NS2::flt << '\n';
ретурн 0;

Излаз је:

9

8

2.5

4.8

У коду постоје два неусаглашена иста имена инт и два неусаглашена иста имена са пливачем.

Шаблон и шаблон специјализација

Шема шаблона омогућава употребу чувара места за различите могуће скаларне типове. Специјализација је одабир одређеног скаларног типа. Следећи код то илуструје за функцију:

#инцлуде
коришћење простора имена стд;
шаблон воид фунц (Т цха, У но)

цоут << "I need bread for " << cha << no << '.' << '\n';

инт маин ()

фунц ('$', 3);
ретурн 0;

Излаз је:

„Треба ми хлеб за 3 долара.”

Пакет параметара предлошка

Преводиоци тек треба да у потпуности примене ову функцију - погледајте касније.

Закључак

Типови Ц ++ постоје у две категорије: основни типови и сложени типови. Основни типови су скаларни типови. Основни сложени типови су низови, набрајања, класе, обједињавања, референце, показивачи и функције. Ови основни типови сложених слојева користе се за израду разрађених сложених типова, а то су типедеф, структуриране везе, бит-поља, простор имена и карактеристике предлошка.

Цхрис

Како преузети и играти Сид Меиер'с Цивилизатион ВИ на Линук-у
Увод у игру Цивилизатион 6 је модерни поглед на класични концепт представљен у серији игара Аге оф Емпирес. Идеја је била прилично једноставна; започе...
Како инсталирати и играти Доом на Линук-у
Увод у Доом Доом серија настала је 90-их година након објављивања оригиналног Доом-а. То је био тренутни хит и од тог времена надаље серија игара је д...
Вулкан за кориснике Линука
Са сваком новом генерацијом графичких картица видимо да програмери игара помичу границе графичке верности и долазе на корак од фотореализма. Али упрко...