[英]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.