example4_defaulted_constructor.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#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;
}
Back to default