C ++

C ++ tipai

C ++ tipai
C ++ objektas yra reikšmė, objektas, nuoroda, funkcija, surašytojas, tipas, klasės narys, bitų laukas, struktūrinis susiejimas, vardų sritis, šablonas, šablonų specializacija arba parametrų paketas. Subjektas gali būti vieno ar kelių tipų. Yra dvi C ++ tipų kategorijos: pagrindiniai ir junginiai. Skaliaras yra aritmetinis arba žymeklio objekto tipas. Pagrindiniai tipai yra skaliarai, o kiti esybių tipai yra sudėtiniai tipai.

Kompiuterio atmintis yra ląstelių serija. Kiekviena ląstelė yra vieno baito dydžio, paprastai tai yra vieta, kurią užima Vakarų Europos simbolis. Objekto dydis nurodomas baitais. Šiame straipsnyje pateikiama C ++ tipų santrauka. Kad galėtumėte suprasti šį straipsnį, jau turėtumėte turėti pagrindinių žinių apie C ++.

Straipsnio turinys

- Pagrindiniai tipai
- Junginių tipų konstravimo būdai
- Masyvai
- Surašymas
- Klasė
- Sąjunga
- Literatūra
- Funkcijos
- Kiti junginių tipai
- Išvada

Pagrindiniai tipai

Pagrindiniai tipai yra skaliariniai tipai.

bool

Boolean tipo arba Boolean tipo reikšmė yra true arba false 1 arba 0. Tiesa ar melas užima vieną baitą.

char, nepasirašytas char ir pasirašytas char

Char char paprastai yra vienas Vakarų Europos simbolis. Paprastai jis užima vieną baitą. Taip pat yra nepasirašyta ir pasirašyta simbolis, kiekvienas iš jų yra aštuonių bitų sveikasis skaičius. Nepasirašyti simboliai neturi neigiamų reikšmių, o pasirašytieji - neigiamų reikšmių. Charakterio vertės rūšis priklauso nuo sudarytojo ir gali būti tiesiog nepasirašyta simbolis. Šie trys simbolių tipai vadinami siaurais simbolių tipais ir kiekvienas užima vieną baitą.

Sveikasis skaičius

Yra penki nepasirašyti standartiniai sveikųjų skaičių tipai ir penki pasirašyti standartiniai sveikųjų skaičių tipai. Penki nepasirašyti sveikųjų skaičių tipai yra „nepasirašytas simbolis“, „nepasirašytas trumpas int“, „nepasirašytas int“, „nepasirašytas ilgas int“ ir „nepasirašytas ilgas ilgas int“. Penki atitinkami pasirašytų sveikųjų skaičių tipai yra: „pasirašyta char“, „trumpas int“, „int“, „ilgas int“ ir „ilgas ilgas int“.

„Nepasirašyta simbolis“ yra tas pats tipas kaip siaurieji simbolių tipai (žr. Aukščiau). „Pasirašyta simbolis“ yra kitas siaurų simbolių tipų tipas (žr. Aukščiau).

Naudojant kompiliatorių „g ++“, „nepasirašyta char“ arba „pasirašyta char“ užima vieną baitą; „Nepasirašytas trumpas int“ arba „trumpas int“ užima du baitus; „Nepasirašytas int“ arba „int“ užima keturis baitus; „Nepasirašytas ilgas int“ arba „ilgas int“ užima 8 baitus; „Nepasirašytas ilgas ilgas int“ arba „ilgas ilgas int“ vis dar užima 8 baitus (dabar).

char16_t, char32_t, wchar_t

Kalbant apie Vakarų Europos simbolius, char tipo pakanka daugelyje situacijų. Tačiau kai kalbama apie kinų ir kitas rytų kalbas, reikia „char16_t“, „char32_t“ arba „wchar_t“. Su „g ++“ kompiliatoriumi char16_t užima du baitus; char32_t užima keturis baitus, o wchar_t taip pat užima keturis baitus.

„Bool“, „char“, „char16_t“, „char32_t“, „wchar_t“, pasirašyto ir nepasirašyto sveikojo skaičiaus tipai sudaro dar vieną rinkinį, vadinamą integraliniais (sveikojo skaičiaus) tipais.

Šioje straipsnio vietoje buvo paminėti du kolektyviniai tipai: siauri simbolių tipai ir integraliniai tipai.

Plūduriuojančių taškų tipai

Tarkime, kad skaičiai 457 000 ir 457 230 yra vienodi rodmenys, matuojami dviem skirtingais matavimo prietaisais. 457 230 yra tikslesnis nei 457 000, nes vertė yra išsamesnė (apima mažesnes vietas: + 200 plius 30). Slankiojo kablelio skaičius yra skaičius, turintis trupmeninę (dešimtainę) dalį. Nors skaičiai kompiuteryje yra bitų seka, kai kurie slankiojo kablelio skaičiai yra tikslesni nei kiti.

Kai kurie matavimo prietaisai matuoja mažiausiomis pakopomis, tarkime, 10 vienetų. Tokio prietaiso rodmenys būtų tokie: 10, 20, 30, 40,… 100, 110, 130, 140,… 200, 210, 220, 230, 240 ir t. T. Nors skaičiai kompiuteryje yra bitų seka, slankiojo kablelio skaičiai svyruoja tam tikrais minimaliais žingsniais (daug mažesni nei 10 vienetų).

C ++ turi tris slankiojo kablelio tipus: plūduriuojantis, dvigubas ir ilgas dvigubas. Bet kurio kompiliatoriaus dvigubas tikslumas turi būti didesnis nei plūdės arba bent plūdės tikslumas; ilgas dvigubas turi būti didesnis nei dvigubas arba bent dvigubas.

Yra trečias kolektyvinis pavadinimas: aritmetinis tipas. Tai yra vientisųjų ir slankiųjų kablelių tipų pavadinimas. Atkreipkite dėmesį, kad tai taip pat visų skaliarinių tipų pavadinimas, kaip paaiškinta iki šiol.

Naudojant kompiliatorių g ++, plūdės baitų skaičius yra keturi; dvigubo baitų skaičius yra aštuoni; ilgo dvigubo baitų skaičius yra šešiolika.

negaliojantis tipas

Naudojant kompiliatorių „g ++“, „void“ tipo dydis yra vienas baitas. Baitas oficialiai neturi bitų, o tai reiškia, kad jo vietoje yra tuščio turinio.

Junginių tipų konstravimo būdai

Junginių tipai nėra pagrindiniai. Tai reiškia, kad junginių tipai yra ne skaliariniai tipai. Šiame skyriuje paaiškinami junginių tipų pagrindai.

Masyvai

Šis kodo segmentas rodo intų ir simbolių masyvą:

int arrInt [] = 1, 2, 3, 4, 5;
char arrCha [] = 'a', 'b', 'c', 'd', 'e';
cout << arrInt[2] <<" <Išėjimas yra: 3 c.

Surašymas

Surašymas yra tipas, pavadintas konstantomis. Apsvarstykite šį kodo segmentą:

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

Išvestis yra: 4. Pirmoji kodo segmento eilutė yra išvardijimas, o a, b arba c - skaitiklis.

Klasė

Klasė yra apibendrintas vienetas, iš kurio galima sukurti (to paties egzemplioriaus) daug to paties apibendrinto vieneto objektų. Ši programa rodo klasę ir du objektus, momentinius iš jos. Toks objektas skiriasi nuo skaliarinio objekto.

# įtraukti
naudojant vardų sritį std;
klasė „TheCla“

vieša:
int skaičius = 5;
int fn ()

grąžinimo numeris;

;
int main ()

TheCla obj1;
TheCla obj2;
cout << obj1.num << " << obj2.num <<'\n';
grąžinti 0;

Išvestis yra: 5 5. Klasės pavadinimas yra TheCla, o dviejų objektų pavadinimai yra obj1 ir obj2. Atkreipkite dėmesį į kabliataškį iškart po klasės aprašymo (apibrėžimo). Atkreipkite dėmesį, kaip du objektai buvo eksponuoti pagrindinėje () funkcijoje.

Pastaba: num yra duomenų narys, o fn yra nario funkcija.

Sąjunga

struktūros

Struktūra yra panaši į masyvą, tačiau vietoj indekso / vertės porų ji turi vardo / vertės poras. Vardai gali būti rašomi bet kokia tvarka. Ši programa rodo struktūrą ir jos naudojimą:

# įtraukti
naudojant vardų sritį std;
struktūros „TheCla“

int skaičius = 5;
plūdė flt = 2.3;
char ch = 'a';
obj1, obj2;
int main ()

cout << obj2.num <<", "<< obj2.flt <<", "<< obj2.ch <<'\n';
grąžinti 0;

Rezultatas yra:

5, 2.3, a

Struktūros pavadinimas yra TheCla. obj1 ir obj2 yra du skirtingi struktūros objektai.

Sąjunga

Ši programa rodo sąjungą ir jos naudojimą:

# įtraukti
naudojant vardų sritį std;
sąjunga TheCla

int num;
plūdė flt = 2.3;
char ch;
obj1, obj2;
int main ()

cout << obj2.flt <<'\n';
grąžinti 0;

Išvestis yra: 2.3. Sąjunga yra panaši į struktūrą. Pagrindinis skirtumas tarp struktūros ir sąjungos yra tas, kad struktūrai vertę (inicijuoti) vienu metu gali turėti tik vienas narys. Aukščiau pateiktoje programoje nario, flt vertė yra 2.3. Kiekvienas kitas narys, skaičius arba ch, gali turėti kitą vertę tik tada, jei flt reikšmė bus atsisakyta.

Literatūra

Nuoroda yra identifikatoriaus sinonimas. Šis kodo segmentas parodo, kaip gauti nuorodą į identifikatorių:

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

Išvestis yra: 5 5 5. ref1 ir ref2 yra tapatybės ID sinonimai.

lvalue nuoroda ir rvalue nuoroda

Pirmiau pateiktos nuorodos yra vertės vertės nuorodos. Šis kodas rodo vertės vertę:

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

Išvestis yra: 5. Ši nuoroda sukurta nenustačius vietos atmintyje. Norint tai pasiekti, reikia dvigubo &, t.e., &&.

Rodyklė

Žymeklis iš tikrųjų nėra C ++ subjektas. Tačiau tai suteikia geresnę nuorodų tvarkymo schemą. Šis kodas rodo, kaip galima sukurti žymeklį:

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

Išvestis yra: 5. Atkreipkite dėmesį į pavadinimo skirtumą tarp ptdId ir ptdId. ptdId yra smailus objektas, o ptrId yra rodyklės objektas. & ptdId grąžina smailaus objekto adresą, priskirtą ptrId. Norėdami grąžinti smailaus objekto vertę, naudokite * ptrId.

Funkcijos

Pagrindinė funkcija ir jos iškvietimas

Šis kodas rodo pagrindinę funkcijos apibrėžtį ir jos iškvietimą:

# įtraukti
naudojant vardų sritį std;
int fn (int num)

cout<<"seen"<<'\n';
grąžinimo numeris;

int main ()

int ret = fn (5);
cout << ret <<'\n';
grąžinti 0;

Rezultatas yra

funkcijos apibrėžimas

5

Funkcijos iškvietimas yra fn (5). Funkcijos pavadinimas yra fn.

Funkcijos nuoroda ir žymeklis

& fn grąžina adresą funkcijos, kurios vardas yra fn, atmintyje. Šis sakinys deklaruoja funkcijos rodyklę:

int (* func) ();

Čia „func“ yra funkcijos rodyklės pavadinimas. Pirmoji skliaustų pora išskiria šią funkcijos rodyklę nuo skaliarinio objekto rodyklės. „func“ gali būti naudojamas laikyti fn identifikuojamos funkcijos adresą taip:

func = &fn;

Ši programa įjungia funkcijos nuorodą ir žymeklį:

# įtraukti
naudojant vardų sritį std;
int fn (int num)

/ * kai kurie teiginiai * /
grąžinimo numeris;

int main ()

int (* func) (int);
func = &fn;
int ret = func (5);
cout << ret <<'\n';
grąžinti 0;

Išvestis yra: 5. Atkreipkite dėmesį, kad tiek fn, tiek func deklaracijoje turi int parametrą.

Kiti junginių tipai

Pirmiau nurodyti pagrindinių junginių tipai yra savaime sudėtiniai. Jie taip pat naudojami kuriant paruoštus junginių tipus.

typedef

„Typedef“ rezervuotas žodis naudojamas tipų sekai pakeisti vienu pavadinimu (sekai). Tai iliustruoja šis kodo segmentas:

typedef nepasirašytas ilgas int IduIL;

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

Išvestis yra 555555555555555555. Kode „IduIL“ tapo tipu, kuris reiškia „nepasirašytas ilgas int“.

Struktūrinis įrišimas

Struktūrinis įrišimas yra funkcija, leidžianti duoti pavadinimus objektams. Šis masyvo pavyzdys tai iliustruoja:

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

Rezultatas yra 1 2 3. Taigi, reikšmėms: 1, 2, 3 buvo suteikti pavadinimai x, y, z. Atkreipkite dėmesį į rezervuoto žodžio „auto“ naudojimą ir vietą. Taip pat atkreipkite dėmesį į laužtinių skliaustų naudojimą.

„Bit-Field“

Atmintis yra ląstelių seka. Kiekviena ląstelė paima baitą. Be to, kiekvienas baitas susideda iš aštuonių bitų. Galima nustatyti ir pakeisti bitų grupę, nebūtinai aštuonis. Tokia grupė vadinama bitų lauku. Šios grupės gulėjo viena šalia kitos. Jei grupės nesudarys tipo, tarkim, 16 bitų trumpam int, pridedami užpildai. Šis kodas tai iliustruoja „struct“:

struct Data

nepasirašytas trumpas wkDay: 3; // 3 bitai
nepasirašytas trumpas pirmadienis: 6; // 6 bitai
nepasirašytas trumpas pirmadienis: 5; 5 bitai
nepasirašytas trumpas yr: 8; // 8 bitai 2 skaitmenų metams
dte;
dte.savaitės diena = 1; dte.pirmadienis = 2; dte.mon = 2; dte.yr = 21;
cout << dte.mon <<'/'<< dte.monDay <<'/'<< dte.yr <<'\n';

Išvestis yra: 2/2/21. Bendras wkDay, MonDay ir mon bitų skaičius yra 3 + 6 + 5 = 14. Taigi, būtų pridėti du užpildymo bitai, sudarantys 16 bitų trumpam sveikam 2 baitų skaičiui (16 bitų). Kiti 8 bitai pradeda kitą trumpą int, kuris tada užpildomas 8 užpildymo bitais.

Pastaba: venkite naudoti bitų laukus; naudoti tik tyrimams.

Vardų sritis

Vardų sritis yra vardų rinkinys, kuris neturėtų prieštarauti tiems patiems kitų vardų rinkinių pavadinimams. Ši programa iliustruoja tų pačių vardų naudojimą iš dviejų skirtingų vardų, taikomų pagrindinės () funkcijos vardų srityje:

# įtraukti
naudojant vardų sritį std;
vardų sritis NS1

int myInt = 8;
plūdės flt;

vardų sritis NS2

int myInt = 9;
plūdės 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';
grąžinti 0;

Rezultatas yra:

9

8

2.5

4.8

Kode yra du prieštaringi vienodi int vardai ir du prieštaringi tie patys plūduriuojantys vardai.

Šablonų ir šablonų specializacija

Šablonų schema leidžia naudoti vietos ženklą skirtingiems galimiems skaliarų tipams. Specializacija yra tam tikro skaliarinio tipo pasirinkimas. Šis kodas tai iliustruoja funkcijai:

# įtraukti
naudojant vardų sritį std;
blankas negaliojantis func (T cha, U no)

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

int main ()

func ('$', 3);
grąžinti 0;

Rezultatas yra:

„Man reikia duonos už 3 USD.“

Šablonų parametrų paketas

Kompiliatoriai vis dar turi visiškai įgyvendinti šią funkciją - žiūrėkite vėliau.

Išvada

C ++ tipai egzistuoja dviejose kategorijose: pagrindiniai tipai ir junginių tipai. Pagrindiniai tipai yra skaliariniai tipai. Pagrindiniai junginių tipai yra masyvai, išvardijimai, klasės, sąjungos, nuorodos, rodyklės ir funkcijos. Šie pagrindiniai junginių tipai naudojami kuriant paruoštus junginių tipus, kurie yra typedef, struktūriniai susiejimai, bitų laukai, vardų sritis ir šablonų ypatybės.

Chrys

„AppyMouse“ ekrano „Trackpad“ ir pelės žymeklis, skirtas „Windows“ tabletėms
Planšetinių kompiuterių vartotojai dažnai praleidžia pelės žymeklį, ypač kai įprasta naudoti nešiojamus kompiuterius. Jutiklinio ekrano išmanieji tele...
Vidutinis pelės mygtukas neveikia sistemoje „Windows 10“
The vidurinis pelės mygtukas padeda naršyti ilgus tinklalapius ir ekranus, kuriuose yra daug duomenų. Jei tai sustos, gerai, jūs naudosite klaviatūrą ...
Kaip pakeisti kairįjį ir dešinįjį pelės mygtukus „Windows 10“ kompiuteryje
Gana įprasta, kad visi kompiuterio pelės įrenginiai yra ergonomiškai sukurti dešiniarankiams. Tačiau yra pelių prietaisų, specialiai sukurtų kairiaran...