Добрый день уважаемые форумчане. Мой вопрос наверное покажется вам глупым. Но тем не менее, я нигде не смог найти на него ответа. Так вот мне интересно как работают конструктор и деструктор по умолчанию. Максимум что мне удалось выяснить, так это то что конструктор память инициализирует, а деструктор вычищает. Но никаких подробностей я узнать не смог. Как это происходит? Какая последовательность действий выполняется. Почему к примеру компилятор сам не выделяет память под объект, а взваливает это на плечи конструктора? Какие операции перегружаются для нового обьекта автоматически. Например мы можем сравнивать два новых обьекта не перегрузив опрацию сравнения? А присваивать один обект другому? И еще один вопрос. Когда при выполнении программы происходит освобождение стека от данных относящихся к этой области действия все обьекты тоже соотвественно стираются, но перед уничтожением обьекта происходит вызов деструктора. Но как? Ведь при "отмотке" стека происходит считывание адреса возврата, и управление просто передается во "внешнюю" часть программы. Как же тогда умудряется запуститься деструктор? Буду очень признателен, всем кто поможет мне разобраться в этом вопросе. Буду благодарен за любую помощь. Возможно кто то знает какую нибудь умную книжку(книги), где описаны подобные тонкие места программирования, или сайт или статью.