Здравствуйте, Аноним, Вы писали:
А>Зачем нужен сборщик мусора?
А>Ведь, деструкторы соберут весь мусор.
А>Я не помню когда последний раз руками очищал память в с++.
Вы, почему-то, рассматриваете только самый примитивный случай: короткоживущие неизменяемые независимые объекты на стеке. А вот давайте возьмём долгоживущую изменяемую древовидную структуру в heap'е. Например, дерево объектов UI. Насколько простым будет управление памятью для такой штуки в C++ ? Вот в managed средах/языках вообще ничего делать не надо; порождать свои собственные структуры такого вида также элементарно.
А>Как можно обходиться без деструкторов?
А>неужели код
А>считается удобнее и надежнне чем:
А>а как быть с очисткой ресурсов (закрытием файлов, различных соединений), тоже руками?
Java имеет неудобный синтаксис в этом месте. В C# же для таких случаев есть специальная конструкция using. Вариант же из C++ лично мне не нравится отсутствием явного обозначения области жизни ресурса.
*Хотя... Если бы это делала IDE, то было бы достаточно.
А>В с++ надо один раз очистить ресурс в деструкторе,
Теоретически. А на практике, при написании деструктора C++ сразу возникает очень много ограничений. Простейший пример: исключение в деструкторе => до свидания развёртка стека и всё остальное.
А>Не совсем понятно в чем прелесть такого подхода?
Надеюсь, что вышеизложенное немного прояснило ситуацию