programming/programming general
[C++] Smart Pointers
반응형
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이 할 수 있는 것 모두 가능하며,
그 이상의 기능을 제공함
반응형
'programming > programming general' 카테고리의 다른 글
[C++] EMCP Lambda expression (0) | 2018.03.25 |
---|---|
[C++] EMCP Item 20: use std::weak_ptr for std::shared_ptr-like pointers that can dangle. (0) | 2018.03.25 |
[C++] EMCP Item 19: 자원에 대한 공유 소유권을 위해서는 shared_ptr을 사용하라 (0) | 2018.03.25 |
[C++] Atomic class 구현 (0) | 2015.07.04 |
댓글