#include using namespace std; class MyClass { public: friend ostream& operator<< (ostream&, const MyClass&); MyClass() : id(++count) { cout << "constructing MyClass #" << id << endl; } virtual ~MyClass() { cout << "destroying MyClass #" << id << endl; } private: int id; static int count; }; // notice how/where static data member is initialized: int MyClass::count = 0; ostream& operator<< (ostream &os, const MyClass &m) { return (os << "Hi. Iam MyClass #" << m.id); } int main() { MyClass *array = new MyClass[5]; for (int i=0; i<5; i++) cout << array[i] << endl; delete [] array; return 0; }