首页 > 解决方案 > 指向具有指针成员的对象的指针数组的析构函数

问题描述

我有一个指向对象的指针数组。对象本身有一个指针成员。

  1. 当我编写析构函数时,指针数组是否也会破坏成员指针?
  2. 当对象被删除而不是旧样式的 for 循环时,在析构函数中循环一个范围 for 循环是否安全?

这是具有指向对象的数组的类。

class Graph {
    EdgeNode* edges[MAX_VERTICES] = { nullptr };    
public:
    Graph() {};
    ~Graph() {
        for (EdgeNode* edge : edges) { //Is it safe to loop like this versus a foor loop as objects getting deleted?
            delete edge;//Does it also delete the edge->next ???
        }
    }

};

这是上面的 Graph 类中维护数组的类

#include <iostream>

const int MAX_VERTICES = 1000;
class EdgeNode { //Do I need a destructor here to ensure the next is getting deleted?
    EdgeNode* next{ nullptr };  
public: 
    EdgeNode() : next(nullptr) {}
    EdgeNode(EdgeNode* _next) : next(_next) {}
    EdgeNode* getNext() const { return next; }; 
};

标签: c++pointersdestructor

解决方案


推荐阅读