Я читал, что деструкторы должны быть определены, когда у нас есть элементы указателя, и когда мы определяем базовый класс, но я не уверен, полностью ли я понимаю. Одна из вещей, о которых я не уверен, заключается в том, является ли определение конструктора по умолчанию бесполезным или нет, поскольку по умолчанию мы всегда получаем конструктор по умолчанию. Кроме того, я не уверен, нужно ли нам определять конструктор по умолчанию для реализации принципа RAII (нужно ли просто назначать распределение ресурсов в конструкторе и не определять какой-либо деструктор?).
class A
{
public:
~Account()
{
delete [] brandname;
delete b;
//do we need to define it?
};
something(){} =0; //virtual function (reason #1: base class)
private:
char *brandname; //c-style string, which is a pointer member (reason #2: has a pointer member)
B* b; //instance of class B, which is a pointer member (reason #2)
vector<B*> vec; //what about this?
}
class B: public A
{
public something()
{
cout << "nothing" << endl;
}
//in all other cases we don't need to define the destructor, nor declare it?
}