这是我的复制构造函数,重载赋值运算符和复制函数,有谁知道为什么这3个不能正常工作?
复制功能:
template <class T>
void BSTType<T>::copy(BTNodeType<T>*& node1, BTNodeType<T>* node2){
if(node2==NULL)
node1=NULL;
else{
node1=new BTNodeType<T>;
node1->item=node2->item;
copy(node1->left, node2->left);
copy(node1->right, node2->right);
}
}
调用复制功能的复制构造函数:
template <class T>
BSTType<T>::BSTType(const BSTType<T>& tree){
if(tree.root==NULL)
root=NULL;
else{
copy(root, tree.root);
}
}
重载的赋值运算符也调用了复制函数:
template <class T>
const BSTType<T>& BSTType<T>::operator=(const BSTType<T>& tree){
if(this!=&tree){
if(root!=NULL)
destroy(root);
if(tree.root==NULL)
root=NULL;
else
copy(root, tree.root);
}
return *this;
}