fork download
  1. #include <iostream>
  2. #include <typeinfo>
  3. using namespace std;
  4.  
  5. struct Base {};
  6.  
  7. struct Derived : Base {};
  8.  
  9.  
  10.  
  11. struct Base_Polymorphic {
  12. virtual ~Base_Polymorphic() {};
  13. };
  14.  
  15. struct Derived_Polymorphic : Base_Polymorphic {};
  16.  
  17.  
  18. int main() {
  19. cout << "Non-polymorphic:" << endl;
  20.  
  21. cout << std::is_pod<Base>::value << endl;
  22. cout << std::is_pod<Derived>::value << endl;
  23.  
  24. Base * x = new Base;
  25. Base * y = new Derived;
  26. cout << typeid(*x).name() << endl;
  27. cout << typeid(*y).name() << endl;
  28. delete x;
  29. delete y;
  30.  
  31. cout << "------------" << endl;
  32.  
  33. cout << "Polymorphic:" << endl;
  34.  
  35. cout << std::is_pod<Base_Polymorphic>::value << endl;
  36. cout << std::is_pod<Derived_Polymorphic>::value << endl;
  37.  
  38. Base_Polymorphic * px = new Base_Polymorphic;
  39. Base_Polymorphic * py = new Derived_Polymorphic;
  40. cout << typeid(*px).name() << endl;
  41. cout << typeid(*py).name() << endl;
  42. delete px;
  43. delete py;
  44.  
  45. cout << "------------" << endl;
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
Non-polymorphic:
1
1
4Base
4Base
------------
Polymorphic:
0
0
16Base_Polymorphic
19Derived_Polymorphic
------------