#include <memory>
#include <vector>
#include <iostream>
class AllocatedClass
{
public:
AllocatedClass(int n = 0) : dummy(n) {}
~AllocatedClass() { std::cout << "I am being destroyed" << '\n'; }
private:
int dummy;
};
class AllocatingClass
{
public:
AllocatingClass() {}
void AddNewObject(int num = 0)
{ shared_list.push_back(std::make_shared<AllocatedClass>(num)); }
private:
static std::vector<std::shared_ptr<AllocatedClass>> shared_list;
};
std::vector<std::shared_ptr<AllocatedClass>> AllocatingClass::shared_list;
AllocatingClass ac;
int main()
{
ac.AddNewObject();
ac.AddNewObject(1);
}
I2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQWxsb2NhdGVkQ2xhc3MgCnsKICAgIHB1YmxpYzoKICAgICAgIEFsbG9jYXRlZENsYXNzKGludCBuID0gMCkgOiBkdW1teShuKSB7fQogICAgICAgfkFsbG9jYXRlZENsYXNzKCkgeyBzdGQ6OmNvdXQgPDwgIkkgYW0gYmVpbmcgZGVzdHJveWVkIiA8PCAnXG4nOyB9CiAgICBwcml2YXRlOgogICAgICAgaW50IGR1bW15Owp9OwoKY2xhc3MgQWxsb2NhdGluZ0NsYXNzIAp7CiAgICBwdWJsaWM6CiAgICAgICAgIEFsbG9jYXRpbmdDbGFzcygpIHt9CiAgICAgICAgIHZvaWQgQWRkTmV3T2JqZWN0KGludCBudW0gPSAwKSAKICAgICAgICAgeyAgc2hhcmVkX2xpc3QucHVzaF9iYWNrKHN0ZDo6bWFrZV9zaGFyZWQ8QWxsb2NhdGVkQ2xhc3M+KG51bSkpOyB9CiAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPEFsbG9jYXRlZENsYXNzPj4gc2hhcmVkX2xpc3Q7Cn07CgpzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8QWxsb2NhdGVkQ2xhc3M+PiBBbGxvY2F0aW5nQ2xhc3M6OnNoYXJlZF9saXN0OwoKQWxsb2NhdGluZ0NsYXNzIGFjOwoKaW50IG1haW4oKQp7CglhYy5BZGROZXdPYmplY3QoKTsKCWFjLkFkZE5ld09iamVjdCgxKTsKfQ==