Использование конструкторов и деструкторов
Совместное использование конструкторов и деструкторов нередко приводит к неожиданным результатам. Обратите внимание, что в конструкторе и деструкторе, помимо текстового сообщения о создании или удалении объекта, указывается также и его адрес. Адрес объекта в обработке получается с помощью указателя this. Такой подход удобен, поскольку позволяет отслеживать создание и удаление различных объектов. Результатом выполнения программы будет последовательность сообщений (адреса объектов могут меняться от
запуска к запуску, однако в соответствующих местах адреса все равно будут совпадать):
#includeusing namespace std; class MyClass{ public: int m,n; //Конструктор класса: MyClass(int a,int b){ m=a; n=b; cout << "Object " << this << " has been created" << endl; cout << "m = " << m << endl; cout << "n = " << n << endl; } //Деструктор класса: ~MyClass(){ cout << "Object " << this << " has been deleted" << endl;} }; //В функции создается объект: MyClass MyFunc(int x,int y){ MyClass tmp(x,y); return tmp;} int main(){ //Создание объекта: MyClass obj(1,2); //Изменение объекта: obj=MyFunc(3,4); return 0; }