#include <iostream>
#include <vector>
using namespace std;
template <class T>
void print(T& c){
for( typename T::iterator i = c.begin(); i != c.end(); i++ ){
std::cout << *i << endl;
}
}
class Item
{
public:
Item();
~Item();
Item( const Item& );
Item& operator=( const Item& );
private:
static int default_constructor_calls_;
static int assignment_calls_;
static int copy_constructor_calls_;
static int destructor_calls_;
};
inline
Item::Item()
{ cout << "\nCall " << ++default_constructor_calls_
<< " of default constructor";
}
inline
Item::Item( const Item& )
{
cout << "\nCall " << ++copy_constructor_calls_
<< " of copy constructor";
}
inline
Item::~Item()
{ cout << "\nCall " << ++destructor_calls_ << " of destructor"; }
inline
Item& Item::operator=( const Item& )
{
cout << "\nCall " << ++assignment_calls_
<< " of assignment operator";
return *this;
}
int Item::default_constructor_calls_ = 0;
int Item::assignment_calls_ = 0;
int Item::copy_constructor_calls_ = 0;
int Item::destructor_calls_ = 0;
int main( )
{
vector<Item> d( 2 );
d.resize( d.capacity() );
d.push_back( Item() );
d.erase( d.begin() );
}
|