#include <iostream>
#include <memory>
class Resource {
public:
Resource() { std::cout << "Resource acquired" << std::endl; }
~Resource() { std::cout << "Resource released" << std::endl; }
};
class Manager {
public:
Manager() : resource_(std::make_unique<Resource>()) {}
// Defaulted destructor
~Manager() = default;
private:
std::unique_ptr<Resource> resource_;
};
int main() {
{
Manager m;
std::cout << "Manager object created" << std::endl;
} // Manager and Resource destructors called here
std::cout << "End of main" << std::endl;
return 0;
}