вызова деструктора
                  
                  
                  есть конструкция
                  
                  
                  struct A {
                  
                  
                    int x;
                  
                  
                    A(int a) : x(a) {};
                  
                  
                  };
                  
                  
                  struct B : A {
                  
                  
                    int n;
                  
                  
                    B(int b) : A(b), n(b) {};
                  
                  
                  };
                  
                  
                  после чего в мейне 
                  
                  
                  B *b = new B(10);
                  
                  
                  A *a = b;
                  
                  
                  delete a;
                  
                  
                  так вот, чего я не понимаю - так это почему в таком случае нет утечки (конкретно у меня), как если бы было в случае с дополнительными членами в наследуемом обьекте или же если бы там был не инт, а скажем стринг
                  
                  
                  оба обьекта находятся под одним адресом, но их члены - под разными же, в следствии чего удалится только x, но не n
                  
                  
                  это оптимизация компилятора (если да, то как ее отключить, чтоб проверить) или что-то еще?
                  
                  
                
Деструктор виртуальный?
нет, в том и дело, деструктор вызывается только базового класса
тогда твой вопрос не понятен, чем тебе отсутствие вызова деструктора наследника не утечка
если вместо int туда закинуть какой-нибудь свой класс с выводом в деструкторе - он тоже удалится только 1 раз
я о том, что ее отловить не могу
всё ещё не понятно)
Обсуждают сегодня