小编Bar*_*lad的帖子

调用析构函数后访问对象

在下面的代码中我~destructor()明确地调用了。但是该对象仍然可以访问。我怎样才能删除它(让它消失)?

class Queue {
    public:
    node* top = NULL;//points to the top of the queue 
    //methods:
    void enqueue(int data);//adds a node to the queue
    void dequeue();
    //printing 
    void print();
    //destructor 
    ~Queue();
};
Run Code Online (Sandbox Code Playgroud)

和析构函数:

Queue::~Queue() {
    //The destructor deletes all items from HEAP
    //Then sets the top to 0
    while (top != NULL)
        this->dequeue();//dequeue until there are NO more items
    top = 0;
}
Run Code Online (Sandbox Code Playgroud)

在源码.cpp中:

Queue q;

q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);

q.dequeue();
q.dequeue();
q.print();

q.~Queue();
q.print();//Here I need to …
Run Code Online (Sandbox Code Playgroud)

c++ oop destructor

2
推荐指数
1
解决办法
810
查看次数

标签 统计

c++ ×1

destructor ×1

oop ×1