Typ Conversie in C++

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).

    Voorbeeld van type impliciete conversie:




    // 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:

    • 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:

      1. Statische cast
      2. Dynamische cast
      3. Const Cast
      4. Herinterpreteer cast
        1. Voorbeeld:




          #include> using> namespace> std;> int> main()> {> > float> f = 3.5;> > > // using cast operator> > int> b => static_cast> <> int> >(F);> > > cout < < b;> }>

          Uitgang:

           3 

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.