fork download
  1. #include <vector>
  2. #include <iostream>
  3.  
  4. int g_serial = 0;
  5.  
  6. struct Rock
  7. {
  8. Rock( char id ) :
  9. id( id ),
  10. serial( g_serial++ )
  11. {
  12. std::cout << __PRETTY_FUNCTION__;
  13. whoami();
  14. }
  15.  
  16. Rock( const Rock& copy ) :
  17. id( copy.id ),
  18. serial( g_serial++ )
  19. {
  20.  
  21. std::cout << __PRETTY_FUNCTION__;
  22. whoami();
  23. }
  24.  
  25. ~Rock( void )
  26. {
  27. std::cout << __PRETTY_FUNCTION__;
  28. whoami();
  29. }
  30.  
  31. void whoami( void ) const
  32. {
  33. std::cout << " id: " << id << ", serial: " << serial << '\n';
  34. }
  35.  
  36. char id;
  37. int serial;
  38. };
  39.  
  40. int main()
  41. {
  42. std::cout << "constructing vector\n";
  43. std::vector<Rock> vr;
  44. std::cout << "constructing rocks\n";
  45. Rock ra('a'), rb('b'), rc('c');
  46.  
  47. std::cout << "reserving vector\n";
  48. vr.reserve(2);
  49.  
  50. std::cout << "pushing ra and rb\n";
  51. vr.push_back(ra);
  52. vr.push_back(rb);
  53.  
  54. std::cout << "vector is now full, next push will reallocate.\n";
  55.  
  56. std::cout << "pushing rc\n";
  57.  
  58. vr.push_back(rc);
  59.  
  60. std::cout << "start destruction\n";
  61. }
  62.  
  63.  
Success #stdin #stdout 0s 2864KB
stdin
Standard input is empty
stdout
constructing vector
constructing rocks
Rock::Rock(char) id: a, serial: 0
Rock::Rock(char) id: b, serial: 1
Rock::Rock(char) id: c, serial: 2
reserving vector
pushing ra and rb
Rock::Rock(const Rock&) id: a, serial: 3
Rock::Rock(const Rock&) id: b, serial: 4
vector is now full, next push will reallocate.
pushing rc
Rock::Rock(const Rock&) id: a, serial: 5
Rock::Rock(const Rock&) id: b, serial: 6
Rock::Rock(const Rock&) id: c, serial: 7
Rock::~Rock() id: a, serial: 3
Rock::~Rock() id: b, serial: 4
start destruction
Rock::~Rock() id: c, serial: 2
Rock::~Rock() id: b, serial: 1
Rock::~Rock() id: a, serial: 0
Rock::~Rock() id: a, serial: 5
Rock::~Rock() id: b, serial: 6
Rock::~Rock() id: c, serial: 7