簡體   English   中英

C ++復制構造函數和賦值運算符

[英]C++ Copy Constructor and Assignment Operator

我正在創建具有以下屬性的堆棧,並嘗試創建一個復制構造函數和一個賦值運算符,但是由於新對象和舊對象指向同一內存,所以我無法這樣做。 請協助。

class Node
{
public:
    Node(const T& data, Node* n = 0)
    {
        element = data;
        next = n;
    }

    T element;
    Node* next;
};

/* The top of the stack */
Node* top;

對於復制構造函數,它像

Node(const Node& data)
{
    element = data.element;
    next=new Node();
    *next = *data.next;
}

分配運算符:

Node& operator=(const Node& data) {
    if (this != &other) { // to avoid self-assignment
        element = data.element;

        // allocate new memory
        Node* tmp = new Node();
        std::memcpy(tmp, data.next, sizeof(Node));

        // deallocate old memory
        delete next;

        // assign new memory to object
        next = new Node();
        std::memcpy(next, tmp, sizeof(Node));
    }
    return *this; 
}

考慮到異常安全性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM