двойной вызов деструктора в std list
От: man_555  
Дата: 02.10.06 06:40
Оценка: :)
class node {
private:
    int id;
public:
    node(const int _id) : id(_id) {
        std::cout << "Node " << id << " constructed\n";
    };
    ~node() {
        std::cout << "Node " << id << " DESTROYED\n";
    };
};

int main()
{
    std::list<node> l;
    l.push_back(node(1) );
    l.push_back(node(2) );
    l.erase(l.begin() );

    return 0;
}



Результат:

Node 1 constructed
Node 1 DESTROYED
Node 2 constructed
Node 2 DESTROYED
Node 1 DESTROYED

почему деструктор node 1 вызывается 2 раза?
Re: двойной вызов деструктора в std list
От: Владик Россия  
Дата: 02.10.06 06:48
Оценка: 1 (1) :)
Здравствуйте, man_555, Вы писали:

_>почему деструктор node 1 вызывается 2 раза?


Добавь лог в конструктор копирования.
Как все запущенно...
Re[2]: двойной вызов деструктора в std list
От: man_555  
Дата: 02.10.06 06:53
Оценка:
В>Добавь лог в конструктор копирования.

Это как?
Re[3]: двойной вызов деструктора в std list
От: Владик Россия  
Дата: 02.10.06 07:01
Оценка:
Здравствуйте, man_555, Вы писали:

В>>Добавь лог в конструктор копирования.


_>Это как?



node(const node& a_node) : id(a_node.id) {
        std::cout << "Copy of Node " << id << " constructed\n";
    };
Как все запущенно...
Re[4]: двойной вызов деструктора в std list
От: man_555  
Дата: 02.10.06 07:05
Оценка:
Спасибо! Всё понял. Реально запущено
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.