programming/programming general

[C++] Smart Pointers

Roien 2018. 3. 25.
반응형

reasons why Raw pointer is hard to love


1) pointing 대상이 객체인지 array인지 알수 없음

2) 사용 후 소멸해야 하는지 아닌지 알 수 없음

3) delete를 사용해야 하는지 다른 방법을 사용해야 하는지 알 수 없음

4) delete 인지 delete[]인지 알 수 없음

5) 삭제를 한번만 했는지 보장하기 힘듦

6) dnagling pointer에 대해 처리 방법이 없음


raw poiner를 wrapping하는 smart pointer의 사용으로 이러한 문제를 해결하자.



C++11에는 4가지 type의 smart pointer가 있음


1) std::auto_ptr

2) std::unique_ptr

3) std::shared_ptr

4) std::weak_ptr



1. auto_ptr

C++98의 leftover

C++11에서 unique_ptr이 되었음

unique_ptr은 move semantics 가능

auto_ptr은 move 시 null pointer로 set 됨

auto_ptr은 container에서 사용 불가

unique_ptr

auto_ptr이 할 수 있는 것 모두 가능하며,

그 이상의 기능을 제공함

반응형

댓글