namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:beispiel:typecast

Beispiel Typecasts

typecast.cpp
#include <iostream>
 
struct Punkt2D 
{ 
  int x, y; 
  virtual ~Punkt2D() {}                 // für RTTI + dynamic_cast
};
 
struct Punkt3D : public Punkt2D 
{
  int z; 
};
 
int main()
{
  double const* d = new double(1.414); 
  Punkt2D* p2 = new Punkt3D;
  Punkt3D* p3;
 
  p2->x =  (int) *d;                   // typecast aus C
  p2->y =  2*int(*d);                  // Typkonverter in C++
 
  *const_cast<double*>(d) = 3.0;       // Schreibschutz entfernen
  p3 = reinterpret_cast<Punkt3D*>(p2); // ganz gefährlich
  p3->z = static_cast<int>(*d);        // Typkonverter suchen
  p3 = dynamic_cast<Punkt3D*>(p2);     // downcast via RTTI 
 
  if (p3)
  {
    std::cout << p3->x << ' ' << p3->y << ' ' << p3->z << '\n'; 
  }
  else
  {
    std::cerr << "keine 3D-Information verfügbar" << '\n';
  }  
  delete p2;  
  delete d;  
}
kennen/beispiel/typecast.txt · Zuletzt geändert: 2020-07-27 10:30 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki