Предположим, что мы имеем:C++: Каков правильный способ удаления экземпляра производного класса?
class A {
protected:
int* iArr;
float *fArr;
public:
A(int* iArr,float *fArr);
~A();
}
class B : public A {
private:
double *dArr;
public:
B(int* iArr,float *fArr,double *dArr);
~B();
}
мой intuation, что это будет вызывать только деструктор B, но когда я запустил его на Visual C++ я увидел, что, когда разрушающие экземпляр из B он вызывает как A, а затем B деструктор.
Каков правильный способ записи деструктора в производном классе? всегда ли нужно предполагать, что родительский класс позаботится об удалении всего, кроме того, что имеет только производный класс?
Edit:
, если это так, то, что если ребенок простирающийся родительский класс только первостепенных функций, то это значит, что я оставить деструктор ребенка пустым?
что делать, если я хочу изменить это? Я имею в виду, что, если я хочу, чтобы вызывался только деструктор ребенка? Есть ли способ сделать это?
Для справок в будущем правильные термины являются родительскими и дочерними по отношению к отцу и сыну, но при работе с классами он обычно является базовым и производным. – chris
после вызова деструктора родительского класса, вызовет дочерний класс! –
@MaziarBouali: Вы уверены, что это не так? Обычно материал разрушается в обратном порядке, чем он был построен; то есть последний построенный, сначала разрушенный ... – cHao