C++의 '자원 핸들(자원 관리 메커니즘)'의 핵심은 생성자와 소멸자입니다. 

간단한 '스마트포인터 컨테이너'를 만들어보면 쉽게 이해할 수 있습니다.

 

 

class Point {
private:
    int x;
    int y;
    
public:
    Point(int _x = 0, int _y = 0) : x{_x}, y{_y} {}
    void Print() const { cout << x << ", " << y << endl; }
};

class PointPtr {
private:
    Point* ptr;

public:
    PointPtr(Point* p) : ptr{p} {}
    
    ~PointPtr() { delete ptr; }
    
    Point* operator->() { return ptr; }
}

void main() {
    PointPtr p{ new Point(2, 3) }; // 메모리 할당을 생성자를 통해 수행합니다.
    p->Print();
    
    // 소멸자에서 알아서 메모리 해제를 수행하기 때문에 개발자는 메모리 해제에 전혀 신경쓸 필요가 없습니다.
}