gpt4 book ai didi

c++ - 我要删除对象还是仅删除其指针

转载 作者:行者123 更新时间:2023-12-01 15:11:04 25 4
gpt4 key购买 nike

我正在实现自己的队列练习版本,但想知道我是否在“pop()”函数中正确删除了元素。

我是C++的新手,我不确定是否只是删除指向要删除的节点的指针,而不是实际的节点本身。

#include <iostream>

template <typename T>
class Queue {
struct Node {
Node* next;
Node* previous;
T data;
Node(T value){
next = nullptr;
previous = nullptr;
data = value;
}
};

Node* front;
Node* back;

public:
Queue(){
front = nullptr;
back = nullptr;
}

void push_back(T data){
Node* n = new Node(data);
if(front == nullptr){
front = n;
back = n;
} else {
back->next = n;
back = n;
}
}

void print(){
Node* cursor = front;
while(cursor != nullptr){
std::cout << cursor->data << '\n';
cursor = cursor->next;
}
}

T pop(){
Node* temp = front;
T element = temp->data;
front = front->next;
delete temp; // Is this deleting the pointer or the Node it points to?
return element;
}
};

int main(){
Queue<int> q;
q.push_back(1);
q.push_back(2);
q.push_back(3);
q.print();
int element = q.pop();
q.print();
}

最佳答案

delete删除传递给它的指针所指向的对象。

关于c++ - 我要删除对象还是仅删除其指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59811191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com