fork download
  1. #include <iostream>
  2. #include <cstdint>
  3.  
  4. class A {
  5. public:
  6. virtual ~A () {}
  7. };
  8.  
  9. class B : public A {
  10. };
  11.  
  12. class C : public A {
  13. };
  14.  
  15. int main() {
  16. uint8_t x;
  17. int32_t y = -4321238;
  18. int* z;
  19. B b;
  20. A& a = b;
  21.  
  22. try {
  23. std::cout << "Casting Integers" << std::endl;
  24. x = static_cast<uint8_t> (y);
  25. std::cout << x << std::endl;
  26.  
  27. std::cout << "Reinterpret casting pointers" << std::endl;
  28. z = reinterpret_cast<int*> (y);
  29.  
  30. C* pc = dynamic_cast<C*> (&a);
  31. std::cout << pc << std::endl;
  32.  
  33. std::cout << "Reinterpret casting references" << std::endl;
  34. C& rc = dynamic_cast<C&> (a);
  35. std::cout << &rc << std::endl;
  36. } catch (...) {
  37. std::cout << "Exception!\n";
  38. }
  39.  
  40. return 0;
  41. }
Success #stdin #stdout 0s 4548KB
stdin
Standard input is empty
stdout
Casting Integers
*
Reinterpret casting pointers
0
Reinterpret casting references
Exception!