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