thing2
- указатель на Node
, но вы ни на что не указали:
Node* thing2 = new Node;
thing2->data = "f";
thing2->left = NULL;
thing2->right = NULL;
cout<< "Thing2 data = " << thing2->data << endl;
delete thing2;
Приведенный выше код выделяет узел в куче, присваивая его thing2
. Когда это сделано с объектом, оно удаляет его.
Более идиоматический подход заключается в использовании умного указателя:
#include <memory>
...
std::auto_ptr<Node> thing2(new Node);
thing2->data = "f";
thing2->left = NULL;
thing2->right = NULL;
cout<< "Thing2 data = " << thing2->data << endl;
Поскольку деструктор auto_ptr
удаляет все, на что он указывает, вам не нужно явно удалять объект.