C ++

Vrste C ++

Vrste C ++
Entiteta C ++ je vrednost, objekt, sklic, funkcija, preštevalnik, tip, član razreda, bitno polje, strukturirana vezava, imenski prostor, predloga, specializacija predloge ali paket parametrov. Subjekt je lahko ene ali več vrst. Obstajata dve kategoriji tipov C ++: temeljni in sestavljeni tipi. Skalar je aritmetika ali vrsta kazalca. Osnovni tipi so skalarji, preostali tipi entitet pa so sestavljeni tipi.

Spomin računalnika je vrsta celic. Vsaka celica ima velikost enega bajta, običajno je to prostor, ki ga zaseda zahodnoevropski značaj. Velikost predmeta je podana v bajtih. Ta članek vsebuje povzetek vrst C ++. Za razumevanje tega članka bi morali že imeti osnovno znanje jezika C ++.

Vsebina članka

- Temeljne vrste
- Načini konstruiranja sestavljenih tipov
- Polja
- Naštevanje
- Razred
- Unije
- Reference
- Funkcije
- Druge vrste spojin
- Zaključek

Temeljne vrste

Temeljni tipi so skalarni tipi.

bool

Logiški tip ali bool ima vrednost true ali false za 1 ali 0. True ali false zavzame en bajt.

char, nepodpisani char in podpisani char

Znak je običajno za en zahodnoevropski znak. Običajno zavzame en bajt. Obstaja tudi nepodpisan in podpisan znak, ki je vsak osem-bitno celo število. Nepodpisani znaki ne vključujejo negativnih vrednosti, medtem ko podpisani znaki vključujejo negativne vrednosti. Vrsta vrednosti, ki jo ima char, je odvisna od prevajalnika in je lahko samo nepodpisani char. Te tri vrste znakov se imenujejo ozke vrste znakov in zasedajo en bajt.

Celo število

Obstaja pet nepodpisanih standardnih celoštevilskih vrst in pet podpisanih standardnih celoštevilskih vrst. Pet neznanjenih celoštevilskih vrst je: "unsigned char", "unsigned short int", "unsigned int", "unsigned long int" in "unsigned long long int". Pet ustreznih podpisanih celoštevilskih vrst je: "podpisani znak", "kratek int", "int", "dolg int" in "dolg dolg int".

»Nepodpisani znak« je enak tipu kot tipi ozkih znakov (glej zgoraj). "Podpisani znak" je druga vrsta ozkih vrst znakov (glej zgoraj).

Pri prevajalniku g ++ »unsigned char« ali »signed char« zavzame en bajt; "Unsigned short int" ali "short int" zavzame dva bajta; "Unsigned int" ali "int" zavzame štiri bajte; "Unsigned long int" ali "long int" zaseda 8 bajtov; "Unsigned long long int" ali "long long int" še vedno zaseda 8 bajtov (od zdaj).

char16_t, char32_t, wchar_t

Ko imamo opravka z zahodnoevropskimi liki, je vrsta char v mnogih situacijah dovolj. Vendar pa je za sporazumevanje s kitajščino in drugimi vzhodnimi jeziki potreben char16_t ali char32_t ali wchar_t. Pri prevajalniku g ++ char16_t zaseda dva bajta; char32_t zavzema štiri bajte, wchar_t pa tudi štiri bajte.

Bool, char, char16_t, char32_t, wchar_t, podpisani in nepodpisani celoštevilni tipi tvorijo drug niz, imenovan integralni (celoštevilski).

Na tej točki v članku sta bila omenjena dva skupna tipa: tipi ozkih znakov in integralni tipi.

Vrste s plavajočo vejico

Predpostavimo, da sta števili 457.000 in 457.230 enaki odčitki, merjeni z dvema različnima merilnima instrumentoma. 457.230 je natančnejši od 457.000, ker je vrednost bolj podrobna (vključuje manjša mesta: + 200 plus 30). Število s plavajočo vejico je število z delnim (decimalnim) delom. Čeprav so številke v računalniku zaporedje bitov, so nekatere številke s plavajočo vejico natančnejše od drugih.

Nekateri merilni instrumenti izvajajo meritve v minimalnih korakih, recimo 10 enot. Tak instrument bi imel naslednje odčitke: 10, 20, 30, 40,… 100, 110, 130, 140,… 200, 210, 220, 230, 240 itd. Čeprav so številke v računalniku zaporedje bitov, se števila s plavajočo vejico gibljejo v nekaj minimalnih korakih (veliko manj kot 10 enot).

C ++ ima tri vrste s plavajočo vejico, in sicer: float, double in long double. Za vsak prevajalnik mora imeti dvojnik natančnost, ki je višja od natančnosti float ali vsaj float; dolgi dvojnik mora imeti natančnost, ki je višja od natančnosti dvojne ali vsaj dvojne.

Obstaja tretje skupno ime: aritmetični tip. To je ime za integralne in vrste s plavajočo vejico. Upoštevajte, da je to tudi ime za vse skalarne tipe, kot smo že pojasnili.

Pri prevajalniku g ++ je število bajtov za float štiri; število bajtov za dvojnico je osem; število bajtov za dolg dvojnik je šestnajst.

void Type

Pri prevajalniku g ++ je velikost tipa void en bajt. Bajt uradno nima bitov, kar pomeni, da ima njegova lokacija prazno vsebino.

Načini konstruiranja sestavljenih tipov

Sestavljeni tipi niso temeljni tipi. To pomeni, da so sestavljene vrste neskalarne vrste. V tem poglavju so razložene osnove sestavljenih vrst.

Polja

Naslednji kodni segment prikazuje vrsto intov in vrsto znakov:

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

Naštevanje

Naštevanje je vrsta z imenovanimi konstantami. Upoštevajte naslednji segment kode:

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

Rezultat je: 4. Prva vrstica segmenta kode je oštevilčenje, a, b ali c pa števec.

Razred

Razred je posplošena enota, iz katere je mogoče ustvariti (primeriti) številne predmete iste posplošene enote. Naslednji program prikazuje razred in dva predmeta, izdelana iz njega. Takšen objekt se razlikuje od skalarnega predmeta.

#include
uporaba imenskega prostora std;
razred TheCla

javno:
int števil = 5;
int fn ()

vrnitev številka;

;
int main ()

TheCla obj1;
TheCla obj2;
cout << obj1.num << " << obj2.num <<'\n';
vrnitev 0;

Izhod je: 5 5. Ime razreda je TheCla, imeni obeh predmetov pa sta obj1 in obj2. Zapiši podpičje tik za opisom (definicijo) razreda. Upoštevajte, kako sta bila primera postavljena v funkciji main ().

Opomba: num je podatkovni član, fn pa je funkcija člana.

Unije

strukt

Struktura je kot matrika, vendar namesto parov indeks / vrednost ima pare ime / vrednost. Imena so lahko zapisana v poljubnem vrstnem redu. Naslednji program prikazuje strukturo in njeno uporabo:

#include
uporaba imenskega prostora std;
struct TheCla

int števil = 5;
float flt = 2.3;
char ch = 'a';
obj1, obj2;
int main ()

cout << obj2.num <<", "<< obj2.flt <<", "<< obj2.ch <<'\n';
vrnitev 0;

Rezultat je:

5, 2.3, a

Ime strukture je TheCla. obj1 in obj2 sta dva različna predmeta strukture.

Unije

Naslednji program prikazuje zvezo in njeno uporabo:

#include
uporaba imenskega prostora std;
zveza TheCla

int številka;
float flt = 2.3;
char ch;
obj1, obj2;
int main ()

cout << obj2.flt <<'\n';
vrnitev 0;

Rezultat je: 2.3. Zveza je podobna strukturi. Glavna razlika med struct in unionom je v tem, da ima lahko za strukturo vrednost (inicializirano) naenkrat samo en član hkrati. V zgornjem programu ima član flt vrednost 2.3. Vsak od ostalih članov, num ali ch, ima lahko naslednjo vrednost le, če je vrednost za flt opuščena.

Reference

Referenca je sinonim za identifikator. Naslednji segment kode prikazuje, kako pridobiti sklic na identifikator:

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

Izhod je: 5 5 5. ref1 in ref2 sta sopomenki za id.

referenca lvalue in referenca rvalue

Zgornje reference so referenčne vrednosti. Naslednja koda prikazuje sklic rvalue:

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

Rezultat je: 5. Ta sklic je ustvarjen, ne da bi se v pomnilniku ugotovila lokacija. Da bi to dosegli, je potreben dvojni &, tj.e., &&.

Kazalec

Kazalec v resnici ni entiteta C ++. Vendar pa ponuja boljšo shemo za obravnavanje referenc. Naslednja koda prikazuje, kako je mogoče ustvariti kazalec:

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

Rezultat je: 5. Upoštevajte razliko v imenu med ptdId in ptdId. ptdId je koničasti objekt, ptrId pa kazalec. & ptdId vrne naslov usmerjenega predmeta, ki je dodeljen ptrId. Če želite vrniti vrednost koničastega predmeta, uporabite * ptrId.

Funkcije

Osnovna funkcija in njen klic

Naslednja koda prikazuje osnovno definicijo funkcije in njen klic:

#include
uporaba imenskega prostora std;
int fn (int številka)

cout<<"seen"<<'\n';
vrnitev številka;

int main ()

int ret = fn (5);
cout << ret <<'\n';
vrnitev 0;

Izhod je

definicija funkcije

5

Klic funkcije je fn (5). Ime funkcije je fn.

Sklic in kazalec na funkcijo

& fn vrne naslov v pomnilnik funkcije, katere ime je fn. Naslednji stavek razglasi kazalec na funkcijo:

int (* func) ();

Tu je func ime kazalca na funkcijo. Prvi par oklepajev razlikuje ta kazalnik funkcije od kazalca skalarnega objekta. Func lahko naredimo tako, da vsebuje naslov funkcije, označene s fn, na naslednji način:

func = &fn;

Naslednji program sproži sklic na funkcijo in kazalec:

#include
uporaba imenskega prostora std;
int fn (int številka)

/ * nekaj izjav * /
vrnitev številka;

int main ()

int (* func) (int);
func = &fn;
int ret = func (5);
cout << ret <<'\n';
vrnitev 0;

Rezultat je: 5. Upoštevajte, da imata fn in func v deklaraciji vsak parameter int.

Druge vrste spojin

Zgornje osnovne sestavljene vrste so sestavljene same po sebi. Uporabljajo se tudi za izdelavo izdelanih tipov spojin.

typedef

Rezervirana beseda typedef se uporablja za zamenjavo zaporedja vrst z enim imenom (za zaporedje). To ponazarja naslednji segment kode:

typedef unsigned long int IduIL;

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

Izhod je 555555555555555555. V kodi je IduIL postal tip, ki pomeni "unsigned long int".

Strukturirana vezava

Strukturirana vezava je funkcija, ki omogoča, da se podjektom dajo imena. Naslednja koda to ponazarja za matriko:

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

Izhod je 1 2 3. Torej, vrednosti: 1, 2, 3 so dobile imena, x, y, z. Upoštevajte uporabo in položaj rezervirane besede, samodejno. Upoštevajte tudi uporabo oglatih oklepajev.

Bit-polje

Spomin je zaporedje celic. Vsaka celica vzame bajt. Prav tako je vsak bajt sestavljen iz osmih bitov. Skupino bitov, ne nujno osem bitov, je mogoče nastaviti in spremeniti. Takšna skupina se imenuje bitno polje. Te skupine bi ležale ena poleg druge. Če skupine ne bodo sestavljale tipa, recimo 16 bitov za kratek int, se dodajo dodatki. Naslednja koda to ponazarja s strukturo:

struct Datum

nepodpisan kratek dan tedna: 3; // 3 bitov
nepodpisan kratek dan: 6; // 6 bitov
nepodpisana kratka pon: 5; // 5 bitov
nepodpisano kratko leto: 8; // 8 bitov za dvomestno leto
dte;
dte.wkDay = 1; dte.ponedeljek = 2; dte.pon = 2; dte.leto = 21;
cout << dte.mon <<'/'<< dte.monDay <<'/'<< dte.yr <<'\n';

Izhod je: 2/2/21. Skupno število bitov za wkDay, MonDay in mon je 3 + 6 + 5 = 14. Torej bi bila dodana dva bita za oblazinjenje, da bi sestavili 16 bitov za kratko celo število 2 bajtov (16 bitov). Naslednjih 8 bitov začne naslednji kratek int, ki se nato napolni z 8 bitovi za oblazinjenje.

Opomba: Izogibajte se uporabi bitnih polj; uporabite samo za raziskave.

Imenski prostor

Imenski prostor je nabor imen, ki ne sme biti v nasprotju z enakimi imeni drugih naborov imen. Naslednji program ponazarja uporabo istih imen iz dveh različnih imenskih prostorov, uporabljenih v imenskem prostoru funkcije main ():

#include
uporaba imenskega prostora std;
imenski prostor NS1

int myInt = 8;
float flt;

imenski prostor NS2

int myInt = 9;
float 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';
vrnitev 0;

Rezultat je:

9

8

2.5

4.8

V kodi sta dve nasprotujoči si enaki imeni int in dve nasprotujoči si iskani imeni.

Predloga in specializacija za predloge

Shema predloge omogoča uporabo ograde za različne možne skalarne vrste. Specializacija je izbira določene skalarne vrste. Naslednja koda to ponazarja za funkcijo:

#include
uporaba imenskega prostora std;
predloga void func (T cha, U no)

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

int main ()

func ('$', 3);
vrnitev 0;

Rezultat je:

»Kruha rabim za 3 dolarje."

Paket predlogov parametrov

Prevajalniki bodo to funkcijo še morali v celoti izvesti - glejte kasneje.

Zaključek

Tipi C ++ obstajajo v dveh kategorijah: temeljni tipi in sestavljeni tipi. Temeljni tipi so skalarni tipi. Osnovni sestavljeni tipi so nizi, oštevilčenja, razredi, združitve, sklici, kazalci in funkcije. Ti osnovni tipi sestavljenih spojev se uporabljajo za izdelavo izdelanih sestavljenih vrst, ki so typedef, strukturirane vezi, bitna polja, imenski prostor in funkcije predloge.

Chrys

Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...
Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...
Kako prikazati prekrivanje zaslonskega menija v celozaslonskih aplikacijah in igrah za Linux
Igranje celozaslonskih iger ali uporaba aplikacij v celozaslonskem načinu brez motenj vam lahko odreže ustrezne sistemske informacije, ki so vidne na ...