Деструкторы для всех объектов-членов типа класса вызываются во время уничтожения первичного класса.Таким образом, ваш this
объект, который размещен в стеке, будет вызывать свой деструктор, когда он выходит из области видимости.В это время любые объекты-члены типа класса вашего this
объекта будут иметь свои собственные деструкторы, вызываемые в дополнение к деструктору для вашего this
объекта, который будет вызывать delete
для указателя члена.
Например, возьмем следующий пример кода:
#include <iostream>
using namespace std;
class A
{
public:
A() {}
~A() { cout << "Destructor for class A called" << endl; }
};
class B
{
private:
A a;
public:
B() {}
~B() { cout << "Destructor for class B called" << endl; }
};
int main()
{
B b;
return 0;
}
При запуске вывод будет выглядеть следующим образом:
Destructor for class B called
Destructor for class A called
Таким образом, вы можете видеть это, когда b
, который расположен настек выходит из области видимости в конце main
, вызывается деструктор для класса B
, который, в свою очередь, после выполнения тела функции-деструктора вызывает деструкторы для любого из его классов.введите объекты данных члена, что в данном случае означало бы деструктор для класса A
.Следовательно, в вашем случае указатель будет вызывать delete
в деструкторе для вашего this
класса, а затем деструктор для _segmentObject
будет вызываться после того, как деструктор для this
завершит выполнение телаего деструктор.Затем после вызова всех деструкторов для нестатических объектов-членов-данных деструктор для this
затем возвращает.