How to correctly delete base class elements
base class:
class node
{
private:
    node *left, *right, *parent;
public:
    node(node* parent,node* left,node* right);
};
subclass:
class nodeFunc: public node
{
private:
    int x;
public:
    nodeFunc(int x, node* parent, node* left, node* right);
};
class, which contains vector:
class tree
{
private:
    vector<node*> nodes;
public:
    tree(int size);
    ~tree();
};
in constructor:
tree::tree(int size)
{
    for (int i = 0; i < size; i++)
        nodes.push_back( new nodeFunc(i,NULL,NULL,NULL) );
}
destructor:
tree::~tree()
{
    for (vector<node*>::iterator it=nodes.begin();it!=nodes.end();++it)
    {
        delete (*it);
    }
    nodes.clear();
}
in main.cpp:
int main()
{
    tree* myTree = new tree(10);
    delete myTree;
    cout<<"end"<<endl;
}
I use debugger to see what happened in every line. After first, myTree->nodes contains 10 elements. After delete myTree->nodes contains 58 items.
