[C++ 문법] '-> 연산자 오버로딩'과 '스마트 포인터'
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();
// 소멸자에서 알아서 메모리 해제를 수행하기 때문에 개발자는 메모리 해제에 전혀 신경쓸 필요가 없습니다.
}
'Programming > C C++' 카테고리의 다른 글
[C++ 문법] '템플릿(template)' (0) | 2019.05.17 |
---|---|
[C++ 문법] '함수 객체(Functor)' (0) | 2019.05.17 |
[C++ 문법] 배열 연산자 오버로딩 (0) | 2019.05.15 |
[C++ 문법] 'const' 위치에 따른 멤버함수의 의미 (2) | 2019.05.15 |
[C] 네트워크 인터페이스에 관한 정보 - ioctl() (0) | 2019.02.02 |
댓글
이 글 공유하기
다른 글
-
[C++ 문법] '템플릿(template)'
[C++ 문법] '템플릿(template)'
2019.05.17 -
[C++ 문법] '함수 객체(Functor)'
[C++ 문법] '함수 객체(Functor)'
2019.05.17 -
[C++ 문법] 배열 연산자 오버로딩
[C++ 문법] 배열 연산자 오버로딩
2019.05.15 -
[C++ 문법] 'const' 위치에 따른 멤버함수의 의미
[C++ 문법] 'const' 위치에 따른 멤버함수의 의미
2019.05.15