Деструкторы вызываются в обратном порядке создания объекта в C++, но я не понимаю, почему он не поддерживается для массива объектов.Почему деструкторы не вызываются в обратном порядке для массива объектов?
#include <iostream>
using namespace std;
class test {
int nmbr;
static int c;
public:
test(int j)
{
cout<<"constructor is called for object no :"<<j<<endl;
nmbr=j;
};
~test()
{
c++;
cout<<"destructor is called for object no :"<<c<<endl;
};
};
int test::c=0;
int main()
{
test ob[]={test(1),test(2),test(3)};
return 0;
}
Приведенные выше результаты программы
constructor is called for object no :1
constructor is called for object no :2
constructor is called for object no :3
destructor is called for object no :1
destructor is called for object no :2
destructor is called for object no :3
Но почему деструкторы не вызываются в обратном порядке?
Попробуйте 'test ob [] = {test (97), test (1043), test (-12)};' и посмотреть, что произойдет. – molbdnilo
или установить тест :: c = 5 или любое случайное число, отличное от 0. вы поймете –