Een typecast is in feite een conversie van het ene type naar het andere. Er zijn twee soorten typeconversie:
- Impliciete typeconversie Ook bekend als ‘automatische typeconversie’.
- Wordt door de compiler zelf gedaan, zonder enige externe trigger van de gebruiker.
- Vindt doorgaans plaats als er in een expressie meer dan één gegevenstype aanwezig is. In dergelijke omstandigheden vindt typeconversie (typepromotie) plaats om verlies van gegevens te voorkomen.
- Alle gegevenstypen van de variabelen worden geüpgraded naar het gegevenstype van de variabele met het grootste gegevenstype.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double>
- Het is mogelijk dat bij impliciete conversies informatie verloren gaat, tekens kunnen verloren gaan (wanneer ondertekend impliciet wordt omgezet in niet-ondertekend) en er kan overflow optreden (wanneer long long impliciet wordt omgezet in float).
- Omzetten per toewijzing: Dit wordt gedaan door het vereiste type expliciet te definiëren vóór de expressie tussen haakjes. Dit kan ook als krachtig gieten worden beschouwd.
Syntaxis:
(type) expression>
waar type geeft het gegevenstype aan waarnaar het eindresultaat wordt geconverteerd.
Voorbeeld:
// 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;>}>>
>
Uitgang:Sum = 2>
- Conversie met behulp van de Cast-operator: Een Cast-operator is een unaire operator waardoor het ene gegevenstype wordt geconverteerd naar een ander gegevenstype.
C++ ondersteunt vier soorten casting:- Statische cast
- Dynamische cast
- Const Cast
- Herinterpreteer cast
Voorbeeld:
Java-teken naar int
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(F);>>>cout << b;>}>>
>
Uitgang:3>
Voorbeeld van type impliciete conversie:
wat is alfabetnummer
// 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;> }> |
>
>Uitgang:
x = 107 y = a z = 108>Expliciete typeconversie: dit proces wordt ook wel typecasting genoemd en wordt door de gebruiker gedefinieerd. Hier kan de gebruiker het resultaat typeren om het van een bepaald gegevenstype te maken.
In C++ kan dit op twee manieren worden gedaan:
Voordelen van typeconversie:
- Dit wordt gedaan om te profiteren van bepaalde kenmerken van typehiërarchieën of typerepresentaties.
- Het helpt bij het berekenen van uitdrukkingen die variabelen van verschillende gegevenstypen bevatten.