Hey guys!
My objective is to implement a tree structure with C++ using a class named "node". During my work I noticed, that when deleting an object of this class, its attributes still have a memory address. Actually I was expecting an error here, because deleting the object should delete its attributes and therefore their reference to any memory address. Since the code is executable and returns addresses, my way of thinking must be wrong. Could you please enlighten me?

Thanks

node.cpp
Code:
#include"Headers/node.h"
#include<iostream>
#include<vector>
using namespace std;

node::node(const string& node_name){
    name = node_name;
    cout << "create new node \"" + name + "\"" << endl;
}

node::~node() {
    cout << "delete node \"" + name + "\"" << endl;
}

int main() {
    node* root = new node("root");
    delete root;
    cout << &root << endl;
    cout << &root->children << endl;
    return 0;

}
node.h
Code:
#pragmaonce
#include<string>
#include<vector>
using namespace std;

class node {
    public:
    string name;
    vector<node*> children;
    node(const string& name);
    virtual ~node();

};