c++ - linkList 复制构造函数和赋值运算符

标签 c++ copy-constructor

我正在编写我的节点和列表类,一切正常,除非我在列表类中包含析构函数、复制构造函数和赋值运算符函数,我不知道它们有什么问题或我错过了什么不包括。

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/

相关文章:

c++ - 错误 : no matching function for call to 'CustomerData::CustomerData()'

c++ - 向默认复制构造函数添加功能

c++ - 关于默认构造函数和复制构造函数

c++ - 基对象作为接受派生对象的函数的参数

c++ - 使用 Qt 的文件列表和空结果

c++ - 将 qwt 从 5.2.1 更新到 6.0.0

c++ - 模板类复制构造函数

c++ - 如何为枚举编写只影响特定枚举类型的通用函数?

c++ - 函数返回指向类的指针时是否调用复制构造函数?

c++ - 共享取消引用的指针值显示不同的结果(应用隐式复制构造函数时)。为什么?