пожалуйста, пройти через мой код ниже:Destructor понятие в C++
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
class ClassA
{
protected:
int width, height;
public:
void set_values(int x, int y)
{
width = x;
height = y;
}
virtual int area()
{
return 100;
}
~ClassA()
{
cout << "base class destructor called" << endl;
}
};
class ClassB : public ClassA
{
public :
int area()
{
return (width * height);
}
~ClassB()
{
cout << "derived class destructor called" << endl;
}
};
int main()
{
ClassA *Ptr = new ClassB;
Ptr->set_values(10, 20);
cout << Ptr->area() << endl;
delete Ptr;
return 0;
}
В приведенном выше коде указатель содержит адрес объекта производного класса, так он должен вызывать производный класс деструктор вместе с деструктор базового класса, когда я удалить указатель, но почему он вызывает только деструктор базового класса. если я сделал деструктор базового класса как виртуальный, то он вызывает как производный класс, так и деструктор базового класса, почему ?. и в случае виртуальных функций, как базовый, так и производный класс имеет одно и то же имя функции, поэтому компилятор разрешает ту, которая наиболее выведена в производном классе, но здесь деструктор не будет иметь того же имени, а затем, как компилятор решает, какой из них нужно вызвать во время бега time.please объяснить мне, как
обязательно прочтите мое объяснение .. – nagaradderKantesh