#include #include #include using namespace std; template struct DeleteObject: public unary_function { void operator()(const T* ptr) const { delete ptr; } }; class Widget { public: int gizmo; int sprog; static int number; Widget( int Gizmo=0, int Sprog=0) : gizmo(Gizmo), sprog(Sprog) { number++; } ~Widget() { number--; } }; int Widget::number; vector vwp; void MakeWidgets() { int i; for (i=0;i<100;i++) { vwp.push_back( new Widget); } } void UnmakeWidgets() { for_each( vwp.begin(), vwp.end(), DeleteObject()); vwp.clear(); } int main() { cout << "Widget::number = " << Widget::number << endl; MakeWidgets(); cout << "Widget::number = " << Widget::number << endl; UnmakeWidgets(); cout << "Widget::number = " << Widget::number << endl; return 0; }