我正在编写我的节点和列表类,一切正常,除非我在列表类中包含析构函数、复制构造函数和赋值运算符函数,我不知道它们有什么问题或我错过了什么不包括。
linklist::linklist()
:firstNode(NULL),
lastNode(NULL),
nodeCount(0) {}
linklist::~linklist()// destructor
{
node* current = firstNode;
while( current != 0 ) {
node* temp = current->getNextNode();
delete current;
current = temp;
}
firstNode = 0;
}
linklist::linklist(linklist &L)// copy constructor
{
firstNode = NULL;
nodeCount = 0;
node* temp = L.firstNode;
for(int i = 0; i < L.getNodeCount(); i++)
{
push_back(temp);
temp = temp->getNextNode();
}
}
linklist& linklist::operator=(const linklist& L)// overloading assignemnt operator
{
linklist* LL;
node* temp = L.firstNode;
while( temp != NULL ) {
LL->getLast();
temp = temp -> getNextNode();
}
return *LL;
}
最佳答案
您的分配应该类似于您的复制构造函数。因为他们都做几乎相同的事情。
区别在于你的分配应该在开始复制 rhs(另一个)之前清除
它在列表(本身)中的内容。
然后它应该返回对自身的引用。 返回 *this
。这样作业就可以链接起来。
linklist& linklist::operator=(const linklist& L)// overloading assignemnt operator
{
// Check if self assignment
if (&L == this)
return *this;
// clear myself.
// copy other.
return *this;
}
关于c++ - linkList 复制构造函数和赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16116441/