//clang 6.0.0
#include <iostream>
using namespace std;
class Content
{
public:
~Content()
{
cout << "~Content()" << endl;
}
int m_A{0};
int m_B{0};
};
class Base
{
public:
virtual ~Base()
{
cout << "~Base()" << endl;
}
};
class Derived : public Base
{
public:
Derived()
{
m_ContentPtr = new Content();
}
virtual ~Derived()
{
cout << "~Derived()" << endl;
delete m_ContentPtr;
}
Content m_Content;
Content* m_ContentPtr;
};
int main()
{
Base* d = new Derived();
delete d;
}
Ly9jbGFuZyA2LjAuMAoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ29udGVudAp7CnB1YmxpYzoKICAgIH5Db250ZW50KCkgCiAgICB7CiAgICAgICAgY291dCA8PCAifkNvbnRlbnQoKSIgPDwgZW5kbDsKICAgIH0KICAgIAogICAgaW50IG1fQXswfTsKICAgIGludCBtX0J7MH07Cn07CgpjbGFzcyBCYXNlCnsKcHVibGljOgogICAgdmlydHVhbCB+QmFzZSgpCiAgICB7CiAgICAgICAgY291dCA8PCAifkJhc2UoKSIgPDwgZW5kbDsKICAgIH0KfTsKCmNsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZQp7CnB1YmxpYzoKICAgIERlcml2ZWQoKQogICAgewogICAgICAgIG1fQ29udGVudFB0ciA9IG5ldyBDb250ZW50KCk7CiAgICB9CiAgICAKICAgIHZpcnR1YWwgfkRlcml2ZWQoKQogICAgewogICAgICAgIGNvdXQgPDwgIn5EZXJpdmVkKCkiIDw8IGVuZGw7CiAgICAgICAgZGVsZXRlIG1fQ29udGVudFB0cjsKICAgIH0KICAgIAogICAgQ29udGVudCBtX0NvbnRlbnQ7CiAgICBDb250ZW50KiBtX0NvbnRlbnRQdHI7Cn07CgppbnQgbWFpbigpCnsKICAgIEJhc2UqIGQgPSBuZXcgRGVyaXZlZCgpOwogICAgZGVsZXRlIGQ7Cn0=