C ++

C ++ veidi

C ++ veidi
C ++ entītija ir vērtība, objekts, atsauce, funkcija, uzskaitītājs, tips, klases loceklis, bitu lauks, strukturēta saistīšana, nosaukumvieta, veidne, veidņu specializācija vai parametru pakete. Uzņēmumam var būt viens vai vairāki veidi. Ir divas C ++ tipu kategorijas: pamata un salikto veidu. Skalārs ir aritmētisks vai rādītāja objekta tips. Fundamentālie tipi ir skalāri, bet pārējie entītiju tipi ir salikti tipi.

Datora atmiņa ir šūnu virkne. Katrai šūnai ir viena baita lielums, parasti tā ir vieta, kuru aizņem Rietumeiropas raksturs. Objekta lielums ir norādīts baitos. Šajā rakstā sniegts kopsavilkums par C ++ tipiem. Lai saprastu šo rakstu, jums jau vajadzētu būt pamatzināšanām par C ++.

Raksta saturs

- Fundamentālie veidi
- Savienojumu tipu veidošanas veidi
- Masīvi
- Uzskaitīšana
- Klase
- Savienība
- Atsauces
- Funkcijas
- Citi savienojumu veidi
- Secinājums

Fundamentālie veidi

Fundamentālie veidi ir skalāri.

bool

Būla tipam vai būla tipam ir 1 vai 0 vērtība true vai false. Patiesa vai nepatiesa aizņem vienu baitu.

char, neparakstīts char un parakstīts char

Char parasti ir viens Rietumeiropas raksturs. Parasti tas aizņem vienu baitu. Ir arī neparakstīta un parakstīta char, kas katrs ir astoņu bitu vesels skaitlis. Neparakstītās rakstzīmes neietver negatīvās vērtības, bet parakstītās rakstzīmes - negatīvās vērtības. Vērtības veids, kāda ir char, ir atkarīgs no sastādītāja un var būt tikai neparakstīta char. Šie trīs rakstzīmju veidi tiek saukti par šauriem rakstzīmju tipiem, un katrs no tiem aizņem vienu baitu.

Vesels skaitlis

Ir pieci neparakstīti standarta veselu skaitļu tipi un pieci parakstīti standarta veselu skaitļu veidi. Pieci neparakstītu veselu skaitļu veidi ir: “neparakstīta char”, “neparakstīta īsa int”, “neparakstīta int”, “neparakstīta gara int” un “neparakstīta gara gara int”. Pieci atbilstošie parakstīto veselu skaitļu veidi ir: “parakstīts char”, “īss int”, “int”, “garš int” un “garš garš int”.

“Neparakstīta rakstzīme” ir tāda paša veida kā šauru rakstzīmju veidi (skat. Iepriekš). “Parakstītā char” ir cits šauru rakstzīmju veidu veids (sk. Iepriekš).

Izmantojot kompilatoru g ++, “neparakstīta char” vai “parakstīta char” aizņem vienu baitu; “Neparakstīts īss int” vai “īss int” aizņem divus baitus; “Neparakstīts int” vai “int” aizņem četrus baitus; “Neparakstīts garš int” vai “garš int” aizņem 8 baitus; “Neparakstīts garš garais int” vai “garais garais int” joprojām aizņem 8 baitus (kā tagad).

char16_t, char32_t, wchar_t

Strādājot ar Rietumeiropas rakstzīmēm, daudzās situācijās pietiek ar char veidu. Tomēr, strādājot ar ķīniešu un citām austrumu valodām, ir nepieciešami char16_t, char32_t vai wchar_t. Izmantojot kompilatoru g ++, char16_t aizņem divus baitus; char32_t aizņem četrus baitus, un wchar_t aizņem arī četrus baitus.

Bool, char, char16_t, char32_t, wchar_t, parakstītie un neparakstītie veselu skaitļu veidi veido citu kopu, ko sauc par integrālajiem (integer) tipiem.

Šajā raksta punktā ir minēti divi kolektīvie tipi: šauri rakstzīmju tipi un integrālie tipi.

Peldošo punktu veidi

Pieņemsim, ka skaitļi 457 000 un 457 230 ir vienādi rādījumi, mērot ar diviem dažādiem mērinstrumentiem. 457 230 ir precīzāks nekā 457 000, jo vērtība ir detalizētāka (ietver mazākas vietas: + 200 plus 30). Peldošā komata skaitlis ir skaitlis ar daļu (decimāldaļu). Lai gan skaitļi datorā ir bitu secība, daži peldošo punktu skaitļi ir precīzāki nekā citi.

Daži mērinstrumenti veic mērījumus minimālos soļos, teiksim, 10 vienības. Šādam instrumentam būtu šādi rādījumi: 10, 20, 30, 40,… 100, 110, 130, 140,… 200, 210, 220, 230, 240 utt. Lai gan skaitļi datorā ir bitu secība, peldošo punktu skaitļi svārstās dažos minimālos posmos (daudz mazāki par 10 vienībām).

C ++ ir trīs peldošo punktu veidi, kas ir: pludiņš, dubultā un garš dubultā. Jebkura sastādītāja dubultā precizitātei jābūt augstākai par pludiņa vai vismaz pludiņa precizitātei; garā dubultā jābūt ar precizitāti, kas ir augstāka nekā dubultai vai vismaz dubultai.

Ir trešais kolektīvais nosaukums: aritmētiskais tips. Tas ir nosaukums integrālajiem un peldošajiem punktiem. Ņemiet vērā, ka tas ir arī visu skalāru veidu nosaukums, kā līdz šim skaidrots.

Izmantojot kompilatoru g ++, pludiņa baitu skaits ir četri; dubultā baitu skaits ir astoņi; garā dubultā baitu skaits ir sešpadsmit.

void Tips

Izmantojot kompilatoru g ++, tukšuma veida lielums ir viens baits. Baitam oficiāli nav bitu, tas nozīmē, ka tā atrašanās vietai ir tukšs saturs.

Savienojumu tipu veidošanas veidi

Savienojumu veidi nav pamata veidi. Tas nozīmē, ka salikto tipu veidi nav skalāri. Šajā sadaļā ir izskaidroti salikto tipu pamati.

Masīvi

Šis koda segments parāda intu masīvu un rakstzīmju masīvu:

int arrInt [] = 1, 2, 3, 4, 5;
char arrCha [] = 'a', 'b', 'c', 'd', 'e';
cout << arrInt[2] <<" <Rezultāts ir: 3 c.

Uzskaitīšana

Uzskaitījums ir tips ar nosauktajām konstantēm. Apsveriet šādu koda segmentu:

enums a = 3, b, c;
cout << b <<'\n';

Rezultāts ir: 4. Kodu segmenta pirmā rinda ir uzskaitījums, un a, b vai c ir skaitītājs.

Klase

Klase ir vispārināta vienība, no kuras var izveidot daudzus (tās pašas vienības) objektus. Šī programma parāda klasi un divus objektus, kas no tās ir izveidoti. Šāds objekts atšķiras no skalārā objekta.

# iekļaut
izmantojot nosaukumvietu std;
klase TheCla

publiski:
int num = 5;
int fn ()

atgriezt num;

;
int main ()

TheCla obj1;
TheCla obj2;
cout << obj1.num << " << obj2.num <<'\n';
atgriešanās 0;

Rezultāts ir: 5 5. Klases nosaukums ir TheCla, un abu objektu nosaukumi ir obj1 un obj2. Atzīmējiet semikolu tieši pēc klases apraksta (definīcijas). Ievērojiet, kā galvenie () funkcijā tika eksponēti abi objekti.

Piezīme: num ir datu dalībnieks un fn ir dalībnieka funkcija.

Savienība

struktur

Struktūra ir kā masīvs, bet tā vietā, lai tajā būtu indeksu / vērtību pāri, tai ir nosaukuma / vērtības pāri. Vārdus var rakstīt jebkurā secībā. Šī programma parāda struktūru un tās lietojumu:

# iekļaut
izmantojot nosaukumvietu std;
strukturēta TheCla

int num = 5;
pludiņš flt = 2.3;
char ch = 'a';
obj1, obj2;
int main ()

cout << obj2.num <<", "<< obj2.flt <<", "<< obj2.ch <<'\n';
atgriešanās 0;

Rezultāts ir:

5, 2.3, a

Struktūras nosaukums ir TheCla. obj1 un obj2 ir divi dažādi struktūras objekti.

Savienība

Šī programma parāda savienību un tās izmantošanu:

# iekļaut
izmantojot nosaukumvietu std;
arodbiedrība TheCla

int num;
pludiņš flt = 2.3;
char ch;
obj1, obj2;
int main ()

cout << obj2.flt <<'\n';
atgriešanās 0;

Rezultāts ir: 2.3. Savienība ir līdzīga struktūrai. Galvenā atšķirība starp struktūru un savienību ir tāda, ka struktūrai vienlaicīgi var būt vērtība (inicializēta) tikai vienam dalībniekam. Iepriekš minētajā programmā locekļa, flt vērtība ir 2.3. Katram pārējam loceklim, skaitlim vai ch, nākamā vērtība var būt tikai tad, ja tiek atcelta flt vērtība.

Atsauces

Atsauce ir identifikatora sinonīms. Šis koda segments parāda, kā iegūt atsauci uz identifikatoru:

int id = 5;
int & ref1 = id;
int & ref2 = id;
cout << id << " << ref1 << " << ref2 <<'\n';

Rezultāts ir: 5 5 5. ref1 un ref2 ir id sinonīmi.

lvalue Reference un rvalue Reference

Iepriekš minētās atsauces ir vērtības. Šis kods parāda vērtības atsauci:

int && ref = 5;
cout << ref <<'\n';

Rezultāts ir: 5. Šī atsauce tiek izveidota, nenorādot nevienu vietu atmiņā. Lai to panāktu, ir nepieciešams dubultā &, t.i.e., &&.

Rādītājs

Rādītājs patiesībā nav C ++ entītija. Tomēr tas nodrošina labāku shēmu, kā rīkoties ar atsaucēm. Šis kods parāda, kā var izveidot rādītāju:

int ptdId = 5;
int ptdId = 5;
int * ptrId;
ptrId = &ptdId;
cout << *ptrId <<'\n';

Rezultāts ir: 5. Ievērojiet nosaukuma atšķirību starp ptdId un ptdId. ptdId ir smails objekts, un ptrId ir rādītāja objekts. & ptdId atgriež smailā objekta adresi, kas piešķirta ptrId. Lai atgrieztu smailā objekta vērtību, izmantojiet * ptrId.

Funkcijas

Pamata funkcija un tās izsaukums

Šis kods parāda pamatfunkcijas definīciju un tās izsaukumu:

# iekļaut
izmantojot nosaukumvietu std;
int fn (int num)

cout<<"seen"<<'\n';
atgriezt num;

int main ()

int ret = fn (5);
cout << ret <<'\n';
atgriešanās 0;

Rezultāts ir

funkcijas definīcija

5

Funkcijas izsaukums ir fn (5). Funkcijas nosaukums ir fn.

Atsauce uz funkciju un rādītājs

& fn atgriež adresi funkcijas, kuras nosaukums ir fn, atmiņā. Šis paziņojums deklarē funkcijas rādītāju:

int (* func) ();

Šeit func ir funkcijas rādītāja nosaukums. Pirmais iekavu pāris atšķir šo funkcijas rādītāju no skalārā objekta rādītāja. Funkciju func var noturēt ar fn identificētas funkcijas adresi šādi:

func = &fn;

Šī programma ievieto funkciju atsauci un rādītāju:

# iekļaut
izmantojot nosaukumvietu std;
int fn (int num)

/ * daži apgalvojumi * /
atgriezt num;

int main ()

int (* func) (int);
func = &fn;
int ret = func (5);
cout << ret <<'\n';
atgriešanās 0;

Rezultāts ir: 5. Ņemiet vērā, ka gan fn, gan func katrā deklarācijā ir int parametrs.

Citi savienojumu veidi

Iepriekš minētie pamata savienojumu veidi paši par sevi ir salikti. Tos izmanto arī, lai izveidotu sarežģītus savienojumu veidus.

typedef

Typedef rezervētais vārds tiek izmantots, lai aizstātu tipu virkni ar vienu nosaukumu (secībai). To ilustrē šāds koda segments:

typedef neparakstīts garš int IduIL;

IduIL myInt = 55555555555555555555;
cout << myInt <<'\n';

Rezultāts ir 555555555555555555. Kodā IduIL ir kļuvis par veidu, kas nozīmē “neparakstīts garš int”.

Strukturēta saistīšana

Strukturētā iesiešana ir funkcija, kas ļauj nosaukumus piešķirt apakšobjektiem. Masīvam to parāda šāds kods:

int arr [3] = 1, 2, 3;
auto [x, y, z] (arr);
cout << x <<"<< y <<"<< z <<'\n';

Rezultāts ir 1 2 3. Tātad vērtībām: 1, 2, 3 ir piešķirti nosaukumi, x, y, z. Ievērojiet rezervētā vārda “auto” izmantošanu un pozīciju. Ievērojiet arī kvadrātiekavu izmantošanu.

Bitu lauks

Atmiņa ir šūnu secība. Katra šūna aizņem baitu. Arī katrs baits sastāv no astoņiem bitiem. Var iestatīt un mainīt bitu grupu, kas nav obligāti astoņi biti. Šādu grupu sauc par bitu lauku. Šīs grupas gulēja blakus. Ja grupas neveidos tipu, teiksim 16 bitus īsam int, tiek pievienoti polsterējuma biti. Šis kods to ilustrē ar struktūru:

struct Datums

neparakstīts īss wkDay: 3; 3 biti
neparakstīts īss pirmdiena: 6; // 6 biti
neparakstīts īss pirmdiena: 5; 5 biti
neparakstīts īss gads: 8; // 8 biti 2 ciparu gadā
dte;
dte.wkDay = 1; dte.pirmdiena = 2; dte.mon = 2; dte.gads = 21;
cout << dte.mon <<'/'<< dte.monDay <<'/'<< dte.yr <<'\n';

Rezultāts ir: 2/2/21. WkDay, MonDay un mon kopējais bitu skaits ir 3 + 6 + 5 = 14. Tātad, divi biti tiks pievienoti, lai veidotu 16 bitus īsajam 2 baitu skaitlim (16 biti). Nākamie 8 biti sāk nākamo īso int, kas pēc tam tiek piepildīts ar 8 polsterējuma bitiem.

Piezīme. Izvairieties no bitu lauku izmantošanas; izmantojiet to tikai pētniecībai.

Vārdamvieta

Vārdamvieta ir vārdu kopa, kurai nevajadzētu būt pretrunā ar tiem pašiem citu nosaukumu kopu nosaukumiem. Šī programma ilustrē to pašu vārdu izmantošanu no divām dažādām nosaukumvietām, kas tiek lietoti galvenās () funkcijas nosaukumvietā:

# iekļaut
izmantojot nosaukumvietu std;
nosaukumvieta NS1

int myInt = 8;
pludiņš flt;

nosaukumvieta NS2

int myInt = 9;
pludiņš flt;

int main ()

cout << NS1::myInt << '\n';
cout << NS2::myInt << '\n';
NS1 :: flt = 2.5;
NS2 :: flt = 4.8;
cout << NS1::flt << '\n';
cout << NS2::flt << '\n';
atgriešanās 0;

Rezultāts ir:

9

8

2.5

4.8

Kodā ir divi konfliktējoši vienādi int nosaukumi un divi konfliktējoši vienādi pludiņa nosaukumi.

Veidņu un veidņu specializācija

Veidņu shēma ļauj izmantot vietturi dažādiem iespējamiem skalāru tipiem. Specializācija ir noteikta skalāra veida izvēle. Funkcijai to parāda šāds kods:

# iekļaut
izmantojot nosaukumvietu std;
template void func (T cha, U nē)

cout << "I need bread for " << cha << no << '.' << '\n';

int main ()

func ('$', 3);
atgriešanās 0;

Rezultāts ir:

“Man vajag maizi par 3 USD.”

Veidņu parametru pakete

Kompilatoriem joprojām ir pilnībā jāievieš šī funkcija - skatiet vēlāk.

Secinājums

C ++ veidi pastāv divās kategorijās: pamata tipi un salikto tipu veidi. Fundamentālie veidi ir skalāri. Pamata savienojumu veidi ir masīvi, uzskaitījumi, klases, savienības, atsauces, norādes un funkcijas. Šie pamatsavienojumu veidi tiek izmantoti, lai izveidotu sarežģītus savienojumu veidus, kas ir typedef, strukturētas sasaistes, bitu lauki, nosaukumvieta un veidņu funkcijas.

Chrys

How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Izmantojot X-Mouse Button Control, atšķirīgi mainiet peles pogas atšķirīgai programmatūrai
Varbūt jums ir nepieciešams rīks, kas varētu mainīt peles vadību ar katru lietoto lietojumprogrammu. Ja tas tā ir, varat izmēģināt lietojumprogrammu a...
Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...