fork download
  1. #include <iostream>
  2.  
  3. class Base
  4. {
  5. public:
  6. Base() = default;
  7. virtual ~Base() = default;
  8.  
  9. int x;
  10. };
  11.  
  12. class DerivedA : public Base
  13. {
  14. int y;
  15. };
  16.  
  17. class DerivedB : public Base
  18. {
  19. float y;
  20. };
  21.  
  22. int main()
  23. {
  24. Base *base = new DerivedA;
  25.  
  26. DerivedA *derivedA = dynamic_cast<DerivedA*>(base);
  27. DerivedB *derivedB = dynamic_cast<DerivedB*>(base);
  28.  
  29. std::cout << "derivedA is " << (derivedA?"valid" : "null") << std::endl;
  30. std::cout << "derivedB is " << (derivedB?"valid" : "null") << std::endl;
  31.  
  32. delete base;
  33.  
  34. return 0;
  35. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
derivedA is valid
derivedB is null