Typové obsadenie je v podstate konverzia z jedného typu na druhý. Existujú dva typy konverzie typu:
- Implicitná konverzia typu Tiež známa ako „automatická konverzia typu“.
- Vykonáva kompilátor samostatne, bez akéhokoľvek externého spúšťača od používateľa.
- Vo všeobecnosti sa vyskytuje, keď je vo výraze prítomný viac ako jeden typ údajov. V takom stave prebieha konverzia typu (propagácia typu), aby sa predišlo strate údajov.
- Všetky typy údajov premenných sa upgradujú na typ údajov premennej s najväčším typom údajov.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double>
- Je možné, že pri implicitných konverziách sa stratia informácie, môžu sa stratiť znaky (keď sa podpísané implicitne skonvertuje na nepodpísané) a môže dôjsť k pretečeniu (keď sa long long implicitne skonvertuje na float).
- Konverzia podľa zadania: To sa dosiahne explicitným definovaním požadovaného typu pred výrazom v zátvorkách. Toto možno považovať aj za násilné vrhanie.
Syntax:
(type) expression>
kde typu označuje typ údajov, na ktorý sa konvertuje konečný výsledok.
Príklad:
dereferenčný ukazovateľ
// C++ program to demonstrate>// explicit type casting>>#include>using>namespace>std;>>int>main()>{>>double>x = 1.2;>>>// Explicit conversion from double to int>>int>sum = (>int>)x + 1;>>>cout <<>'Sum = '><< sum;>>>return>0;>}>>
>
Výkon:Sum = 2>
- Konverzia pomocou operátora Cast: Operátor Cast je an unárny operátor ktorý núti jeden dátový typ konvertovať na iný dátový typ.
C++ podporuje štyri typy castingu:- Statické prenášanie
- Dynamické obsadenie
- Const Cast
- Reinterpretovať Cast
Príklad:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(f);>>>cout << b;>}>>
>
Výkon:3>
Príklad implicitnej konverzie typu:
// An example of implicit conversion> > #include> using> namespace> std;> > int> main()> {> >int> x = 10;>// integer x> >char> y =>'a'>;>// character c> > >// y implicitly converted to int. ASCII> >// value of 'a' is 97> >x = x + y;> > >// x is implicitly converted to float> >float> z = x + 1.0;> > >cout <<>'x = '> << x << endl> ><<>'y = '> << y << endl> ><<>'z = '> << z << endl;> > >return> 0;> }> |
>
>Výkon:
x = 107 y = a z = 108>Explicitná konverzia typu: Tento proces sa tiež nazýva pretypovanie a je definovaný používateľom. Tu môže používateľ pretypovať výsledok, aby z neho vytvoril konkrétny dátový typ.
V C++ sa to dá urobiť dvoma spôsobmi:
Výhody typovej konverzie:
- Robí sa to s cieľom využiť určité vlastnosti typových hierarchií alebo reprezentácií typov.
- Pomáha počítať výrazy obsahujúce premenné rôznych dátových typov.