我正在实现一个类Set,并且有一个成员函数,讽刺地称为member,如果要传递的值在set中,则返回true,否则返回false。我的问题是,如果我要创建一个临时节点进行迭代以搜索该值,那么在完成此临时节点后,是否需要删除该临时节点以将内存返回到堆,因为它不是从中返回的功能?
在此类中,将节点作为私有结构嵌入到Set类中,如下所示:
private:
//Precondition: linked list is sorted in ascending order
struct Node {
int value;
Node* link;
};
Node* list;
static Node* cons(int x, Node *p);
我指的功能是:
bool Set::member(int x) const {
if(list == nullptr)
return false;
Node* tempNode = list;
while(tempNode != nullptr) {
if(tempNode->value > x)
return false;
if(tempNode->value == x)
return true;
tempNode = tempNode->link;
}
return false;
}
最佳答案
没有。tempNode
只是带有automatic storage duration的非静态局部变量;它的范围仅限于函数的开始和结束。函数返回时,它将自动释放。