求助~~自动调用构造函数后一定要调用析构函数吗?
我建立了一个二叉树,声明了一个类--------这个是节点类的实现文件------
BiNode::BiNode(void)
:m_ndata(0),
m_pLchild(NULL),
m_pRchild(NULL)
{
cout<<"BiNode构造函数\n";
}
BiNode::~BiNode(void)
{
cout<<"BiNode 析构函数\n";
}
在二叉树类中只有一个私有成员变量是 节点类型的指针 即 BiNode* root;
在创建二叉树的函数里
-----------创建二叉树的函数-------------
void BiTree::creatTree(){
cout<<"请输入字符创建二叉树\n";
char data;
int rear,front;
rear = 0;
front = 1;
BiNode* Q[Maxsize];
BiNode* node;
//BiNode* root;
cin>>data;
while(data != '$'){
if(data != '@'){
node = new BiNode(); //这句会调用BiNode 的构造函数,屏幕打印构造函数....
node->m_pLchild = NULL;
node->m_pRchild = NULL;
node->m_ndata = data;
}
rear++;
Q[rear] = node;
if(rear == 1) root = node;
else{
if(node && Q[front]){
if(rear % 2 == 0) Q[front]->m_pLchild = node;
else Q[front]->m_pRchild = node;
if(rear % 2 == 1) front++;
}
}
cin>>data;
}
}
------main函数-------
int _tmain(int argc, _TCHAR* argv[])
{
BiTree myTree;
//BiNode* root;
//root = myTree.creatTree();
myTree.creatTree();
myTree.inorder(myTree.root);
delete myTree.root;//这个只是释放了根节点吧,那些子树的内存怎么释放呢?
system("pause");
return 0;
}
在函数里我有调用到构造函数,但是那个是我新建的节点,不能删除的,所以不用BiNode的析构函数吧?但是它不会自己调用吗?
应该要在程序退出后释放资源吧...但是我新建了好多个BiNode 怎么一个个释放呢? 还是只释放一个就好了?
小弟初学,求高人指教~~
[ 本帖最后由 jimbray 于 2010-4-17 14:10 编辑 ]