Нужно ли что-нибудь писать в деструкторе этого класса? - PullRequest
0 голосов
/ 27 ноября 2011

Спасибо всем! Теперь я изменил свою логику. Поскольку, если я буду содержать ту же самую точку указателя на себя, это создаст бесконечный цикл. Так что для этого исправленного мне нужно написать деструктор?

#include <stdio.h>
#include <stdlib.h>
#include <tr1/array>

using namespace std;
class Graphnode {

public:
    std::tr1::array<int, 16> state;
    int x;
    int depth;
    Graphnode(std::tr1::array<int, 16>,int,int);
    Graphnode();
    //~Graphnode();

};
Graphnode::Graphnode()
{
    int i=0;
    for(i=0;i<16;i++)
    {
       state[i] = 0;
    }
    x = 0;
    depth = 0;
}
Graphnode::Graphnode(std::tr1::array<int, 16> _state,int _x,int _d)
{   
    int i=0;
    for(i=0;i<16;i++)
    {
       state[i] = _state[i];
    }
    x = _x;
    depth = _d;
}
/*Graphnode::~Graphnode()
{
}*/

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Вы ничего не выделили в кучу, поэтому вам не нужно ничего очищать, когда объект уничтожен. Компилятор автоматически сгенерирует для вас деструктор, и IIRC будет делать то же самое, что и пустой, который вы закомментировали, хотя есть пара существенных отличий. Вот хороший вопрос / ответ о разнице между пустым деструктором и сгенерированным компилятором.

0 голосов
/ 27 ноября 2011

Ваш код создаст бесконечный цикл при попытке создать один Graphnode

Вы можете попытаться создать специальный конструктор для подграфов, чтобы внутри этого конструктора не создавалось больше Graphnode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...