fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class figure
  6. {
  7. public:
  8. virtual ~figure(){}
  9. };
  10.  
  11. class Pawn : public figure
  12. {
  13. public:
  14. virtual ~Pawn(){}
  15. };
  16.  
  17. void value(figure fi)
  18. {
  19. cout << "val typeid check: " << (dynamic_cast<Pawn*>(&fi) != nullptr) << endl;
  20. if (dynamic_cast<Pawn*>(&fi) != nullptr)
  21. {
  22. Pawn& p = dynamic_cast<Pawn&>(fi);
  23. }
  24. }
  25.  
  26. void refer(figure& fi)
  27. {
  28. cout << "val typeid check: " << (dynamic_cast<Pawn*>(&fi) != nullptr) << endl;
  29. if (dynamic_cast<Pawn*>(&fi) != nullptr)
  30. {
  31. Pawn& p = dynamic_cast<Pawn&>(fi);
  32. }
  33. }
  34.  
  35. int main()
  36. {
  37. Pawn p;
  38. value(p);
  39. refer(p);
  40. }
  41.  
Success #stdin #stdout 0.01s 5360KB
stdin
Standard input is empty
stdout
val typeid check: 0
val typeid check: 1