C ++

Vrste C ++

Vrste C ++
C ++ entitet je vrijednost, objekt, referenca, funkcija, popisivač, vrsta, član klase, polje bita, strukturirano vezivanje, prostor imena, predložak, specijalizacija predloška ili paket parametara. Entitet može biti jedne ili više vrsta. Postoje dvije kategorije tipova C ++: osnovni i složeni tipovi. Skalar je aritmetički ili tip objekta pokazivača. Osnovni su tipovi skalari, dok su ostali tipovi entiteta složeni tipovi.

Sjećanje računala je niz stanica. Svaka ćelija ima veličinu jednog bajta, to je obično prostor koji zauzima zapadnoeuropski lik. Veličina objekta navedena je u bajtovima. Ovaj članak daje sažetak tipova C ++. Već biste trebali imati osnovno znanje o C ++-u, kako biste razumjeli ovaj članak.

Sadržaj članka

- Temeljne vrste
- Načini konstruiranja složenih vrsta
- Nizovi
- Nabrajanje
- Razred
- Unija
- Reference
- Funkcije
- Ostale vrste spojeva
- Zaključak

Temeljne vrste

Osnovni tipovi su skalarni tipovi.

bool

Booleov tip ili bool tip ima vrijednost true ili false za 1 ili 0. Točno ili netačno zauzima jedan bajt.

char, nepotpisani char i potpisani char

Char je obično za jedan zapadnoeuropski lik. Obično zauzima jedan bajt. Tu je i nepotpisani i potpisani char, koji je svaki osmobitni cijeli broj. Nepotpisani znakovi ne uključuju negativne vrijednosti, dok potpisani znakovi uključuju negativne vrijednosti. Vrijednost koju char ima ovisi o prevoditelju i može biti samo nepotpisani char. Te tri vrste znakova nazivaju se uskim vrstama znakova i svaka zauzima jedan bajt.

Cijeli broj

Postoji pet nepotpisanih standardnih cijelih brojeva i pet potpisanih standardnih cijelih brojeva. Pet vrsta nepotpisanih cijelih brojeva su: "unsigned char", "unsigned short int", "unsigned int", "unsigned long int" i "unsigned long long int". Pet odgovarajućih vrsta potpisanih cijelih brojeva su: „potpisani char“, „short int“, „int“, „long int“ i „long long int“.

"Nepotpisani znak" je isti tip kao i uski tipovi znakova (vidi gore). "Potpisani znak" je druga vrsta uskih tipova znakova (vidi gore).

S kompajlerom g ++, "unsigned char" ili "signed char" zauzima jedan bajt; "Unsigned short int" ili "short int" zauzima dva bajta; "Unsigned int" ili "int" zauzima četiri bajta; "Unsigned long int" ili "long int" zauzima 8 bajtova; "Unsigned long long int" ili "long long int" i dalje zauzima 8 bajtova (od sada).

char16_t, char32_t, wchar_t

Kad se radi sa zapadnoeuropskim likovima, tip char je dovoljan u mnogim situacijama. Međutim, kada se radi s kineskim i drugim istočnim jezicima, potreban je char16_t, ili char32_t, ili wchar_t. S kompajlerom g ++ char16_t zauzima dva bajta; char32_t zauzima četiri bajta, a wchar_t također zauzima četiri bajta.

Bool, char, char16_t, char32_t, wchar_t, potpisani i nepotpisani cjelobrojni tipovi čine još jedan skup, koji se naziva integralni (cjelobrojni) tipovi.

U ovom su se trenutku u članku spomenule dvije kolektivne vrste: uski tipovi znakova i integralni tipovi.

Vrste s pomičnom zarezom

Pretpostavimo da su brojevi 457.000 i 457.230 isto očitanje, mjereno s dva različita mjerna instrumenta. 457.230 preciznije je od 457.000 jer je vrijednost detaljnija (uključuje manja mjesta: + 200 plus 30). Broj s pomičnom zarezom je broj s razlomljenim (decimalnim) dijelom. Iako su brojevi u računalu slijed bitova, neki su brojevi s pomičnom zarezom precizniji od ostalih.

Neki mjerni instrumenti vrše mjerenja u minimalnim koracima, recimo 10 jedinica. Takav instrument imao bi sljedeća očitanja: 10, 20, 30, 40, ... 100, 110, 130, 140, ... 200, 210, 220, 230, 240 itd. Iako su brojevi u računalu slijed bitova, brojevi s pomičnom zarezom kreću se u nekim minimalnim koracima (mnogo manji od 10 jedinica).

C ++ ima tri vrste s pomičnom zarezom, a to su: float, double i long double. Za bilo koji kompajler, double mora imati preciznost koja je veća od float ili barem float; long double mora imati preciznost koja je veća od one double ili barem one double.

Postoji treći skupni naziv: aritmetički tip. Ovo je naziv za integralne i tipove s pomičnom zarezom. Imajte na umu da je ovo također naziv za sve skalarne tipove, kao što je do sada objašnjeno.

S kompajlerom g ++, broj bajtova za float je četiri; broj bajtova za dvostruko je osam; broj bajtova za dugi dvostruki je šesnaest.

void Tip

S kompajlerom g ++, veličina void tipa je jedan bajt. Bajt službeno nema bitova, što znači da njegovo mjesto ima prazan sadržaj.

Načini konstruiranja složenih vrsta

Složeni tipovi nisu osnovni tipovi. To znači da su složeni tipovi neskalarni tipovi. Ovaj odjeljak objašnjava osnove složenih vrsta.

Nizovi

Sljedeći segment koda prikazuje niz intova i niz znakova:

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

Nabrajanje

Nabrajanje je vrsta s imenovanim konstantama. Razmotrite sljedeći segment koda:

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

Izlaz je: 4. Prvi redak segmenta koda je nabrajanje, a a, b ili c je popisivač.

Razred

Klasa je generalizirana jedinica od koje se mogu stvoriti (instancirati) mnogi objekti iste generalizirane jedinice. Sljedeći program prikazuje klasu i dva objekta koja su iz nje izrađena. Takav se objekt razlikuje od skalarnog objekta.

#include
pomoću prostora imena std;
razred TheCla

javnost:
int broj = 5;
int fn ()

povratni broj;

;
int main ()

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

Izlaz je: 5 5. Ime klase je TheCla, a imena dvaju objekata su obj1 i obj2. Zapišite točku i zarez odmah nakon opisa (definicije) klase. Primijetite kako su dva objekta instancirana u funkciji main ().

Napomena: num je član podataka, a fn je funkcija člana.

Unija

strukt

Struktura je poput niza, ali umjesto da ima parove indeks / vrijednost, ona ima parove ime / vrijednost. Imena mogu biti napisana bilo kojim redoslijedom. Sljedeći program prikazuje strukturu i njezinu upotrebu:

#include
pomoću prostora imena std;
struct TheCla

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

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

Izlaz je:

5, 2.3, a

Naziv strukture je TheCla. obj1 i obj2 su dva različita objekta strukture.

Unija

Sljedeći program prikazuje uniju i njezinu upotrebu:

#include
pomoću prostora imena std;
sindikat TheCla

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

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

Izlaz je: 2.3. Unija je slična strukturi. Glavna razlika između struct i union je u tome što za struct samo jedan član može imati vrijednost (inicijaliziranu) u bilo kojem trenutku. U gornjem programu, član, flt ima vrijednost 2.3. Svaki od ostalih članova, num ili ch, može imati vrijednost sljedeću samo ako je vrijednost za flt napuštena.

Reference

Referenca je sinonim za identifikator. Sljedeći segment koda pokazuje kako dobiti referencu na identifikator:

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

Izlaz je: 5 5 5. ref1 i ref2 su sinonimi za id.

Referenca lvalue i Referenca rvalue

Gornje reference su reference vrijednosti. Sljedeći kod prikazuje referencu rvalue:

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

Izlaz je: 5. Ova referenca kreira se bez identificiranja bilo kojeg mjesta u memoriji. Da bi se to postiglo, potrebno je udvostručiti &, tj.e., &&.

Pokazivač

Pokazivač zapravo nije C ++ entitet. Međutim, pruža bolju shemu bavljenja referencama. Sljedeći kod pokazuje kako se može stvoriti pokazivač:

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

Izlaz je: 5. Obratite pažnju na razliku u nazivu između ptdId i ptdId. ptdId je šiljasti objekt, a ptrId je pokazivački objekt. & ptdId vraća adresu istaknutog objekta koja je dodijeljena ptrId. Da biste vratili vrijednost istaknutog objekta, upotrijebite * ptrId.

Funkcije

Osnovna funkcija i njezin poziv

Sljedeći kod prikazuje osnovnu definiciju funkcije i njezin poziv:

#include
pomoću prostora imena std;
int fn (int broj)

cout<<"seen"<<'\n';
povratni broj;

int main ()

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

Izlaz je

definicija funkcije

5

Poziv funkcije je fn (5). Naziv funkcije je fn.

Referenca i pokazivač na funkciju

& fn vrati adresu u memoriju funkcije čije je ime fn. Sljedeća izjava deklarira pokazivač na funkciju:

int (* func) ();

Ovdje je func naziv pokazivača na funkciju. Prvi par zagrada razlikuje ovaj pokazivač funkcije od pokazivača skalarnog objekta. Func može biti načinjen da drži adresu funkcije identificirane fn, kako slijedi:

func = &fn;

Sljedeći program aktivira referencu i pokazivač funkcije:

#include
pomoću prostora imena std;
int fn (int broj)

/ * neke izjave * /
povratni broj;

int main ()

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

Izlaz je: 5. Imajte na umu da i fn i func imaju parametar int u deklaraciji.

Ostale vrste spojeva

Gore navedene osnovne vrste spojeva same su po sebi složene. Također se koriste za izradu razrađenih složenih vrsta.

typedef

Rezervirana riječ typedef koristi se za zamjenu niza tipova jednim imenom (za slijed). Sljedeći segment koda to ilustrira:

typedef unsigned long int IduIL;

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

Izlaz je 555555555555555555. U kodu je IduIL postao tip koji označava "unsigned long int".

Strukturirano vezivanje

Strukturirano vezivanje značajka je koja omogućuje davanje imena podobjektima. Sljedeći kod to ilustrira za niz:

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

Izlaz je 1 2 3. Dakle, vrijednosti: 1, 2, 3 dobile su imena, x, y, z. Zabilježite upotrebu i položaj rezervirane riječi, auto. Također, imajte na umu upotrebu uglatih zagrada.

Bitno polje

Sjećanje je slijed stanica. Svaka stanica uzima bajt. Također, svaki se bajt sastoji od osam bitova. Skupina bitova, ne nužno osam bitova, može se postaviti i promijeniti. Takva se skupina naziva bit-polje. Te bi skupine ležale jedna do druge. Ako grupe neće činiti tip, recimo 16 bitova za kratki int, dodaju se bitovi za popunjavanje. Sljedeći kod to ilustrira strukturom:

struct Datum

nepotpisani kratki wkDan: 3; // 3 bita
nepotpisani kratki ponedjeljak: 6; // 6 bitova
nepotpisani kratki pon: 5; // 5 bitova
nepotpisano kratko god: 8; // 8 bitova za dvoznamenkastu godinu
dte;
dte.wkDan = 1; dte.ponedjeljak = 2; dte.pon = 2; dte.god = 21;
cout << dte.mon <<'/'<< dte.monDay <<'/'<< dte.yr <<'\n';

Izlaz je: 2/2/21. Ukupan broj bitova za wkDay, MonDay i mon je 3 + 6 + 5 = 14. Dakle, dodala bi se dva bita za popunjavanje da bi se dobilo 16 bitova za kratki cijeli broj od 2 bajta (16 bita). Sljedećih 8 bitova započinje sljedeći kratki int, koji se zatim popunjava s 8 bita za popunjavanje.

Napomena: Izbjegavajte upotrebu bit-polja; koristiti ga samo za istraživanje.

Prostor imena

Prostor imena je skup imena koji se ne smije sukobljavati s istim imenima ostalih skupova imena. Sljedeći program ilustrira upotrebu istih imena iz dva različita imenska prostora, primijenjena u prostoru imena main () funkcije:

#include
pomoću prostora imena std;
prostor imena NS1

int myInt = 8;
float flt;

prostor imena 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';
return 0;

Izlaz je:

9

8

2.5

4.8

U kodu se nalaze dva sukobljena ista int imena i dva ista plutajuća imena.

Predložak i predložak specijalizacija

Shema predloška omogućuje upotrebu rezerviranog mjesta za različite moguće skalarne tipove. Specijalizacija je odabir određenog skalarnog tipa. Sljedeći kod to ilustrira za funkciju:

#include
pomoću prostora imena std;
predložak void func (T cha, U no)

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

int main ()

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

Izlaz je:

“Treba mi kruh za 3 dolara."

Paket parametara predloška

Prevoditelji još trebaju u potpunosti implementirati ovu značajku - pogledajte kasnije.

Zaključak

C ++ tipovi postoje u dvije kategorije: osnovni tipovi i složeni tipovi. Osnovni tipovi su skalarni tipovi. Osnovni složeni tipovi su nizovi, nabrajanja, klase, unija, reference, pokazivači i funkcije. Ovi osnovni složeni tipovi koriste se za izradu razrađenih složenih vrsta, a to su typedef, strukturirani vezivi, bit-polja, prostor imena i značajke predloška.

Chrys

Kako koristiti GameConqueror Cheat Engine u Linuxu
Članak pokriva vodič o korištenju GameConqueror varalice u Linuxu. Mnogi korisnici koji igraju igre na sustavu Windows često koriste aplikaciju "Cheat...
Najbolji emulatori igraće konzole za Linux
Ovaj će članak navesti popularni softver za emulaciju igraće konzole dostupan za Linux. Emulacija je sloj kompatibilnosti softvera koji oponaša hardve...
Najbolji Linux Distros za igre na sreću 2021. godine
Linux operativni sustav daleko je prevalio svoj izvorni, jednostavni izgled zasnovan na poslužitelju. Ovaj se OS posljednjih godina izuzetno poboljšao...