728x90
반응형
Smart Pointer의 unique_ptr 사용하기
- 포인터 대입 복사 안됨.
- 소유권 이전시 move() 사용
- unique_ptr로 할당한 메모리는 reset()으로 초기화, delete로 초기화시 에러
#include <iostream>
#include <memory>
using namespace std;
class Point
{
int x, y;
public:
Point(int _x, int _y) : x(_x), y(_y) { cout << "생성자" << endl;}
~Point() { cout << "소멸자" << endl; }
void print() { cout << x << ", " << y << endl;}
};
int main(void)
{
// 객체에 대한 포인터가 필요할 경우 unique pointer 사용
unique_ptr<int> ptr1(new int(5));
auto ptr2 = move(ptr1); // pointer 소유권 이전
// cout << *ptr1 << endl; // error : Segnebtatuib fault
// auto ptr3 = ptr2; // error : unique pointer는 복사는 불가능
cout << ptr1.get() << endl; // nullptr 이라 0 출력
cout << ptr2.get() << endl;
cout << *ptr2 << endl;
ptr1.reset(); // 아무것도 안함
ptr2.reset(); // memony 초기화
unique_ptr<Point> pt = make_unique<Point>(10, 20);
pt->print();
pt.reset();
// delete qt; // error
}
728x90
반응형
'Programming > C&C++&C#' 카테고리의 다른 글
modern C++ begin/end (0) | 2019.12.15 |
---|---|
modern C++ noexcept (0) | 2019.12.15 |
modern C++ using 사용법 (0) | 2019.12.15 |
modern C++ static_assert (0) | 2019.12.15 |
modern C++ 11/14 iteral & type, auto & decltype (0) | 2019.12.15 |