Feedback : smile.k06@gmail.com
갑자기 새벽에 자다 깨서 그냥 shared_ptr 궁금한 점을 테스트 해봄.
궁금증은 이러하다.
shared_ptr로 new를 할 수 있다. reference count 로 포인터 연결 갯수를 알 수 있다.
기본 포인터로 new를 할 수 있다. 몇개의 포인터가 연결이 되었나 알 수 없다.
그렇다면 기본 포인터로 new를 한 녀석을 shared_ptr이 받을 수는 없을까?
였다.
1. 무식하게 그냥 넣어본다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> #include <memory> int main() { // 일반 포인터로 Heap에 Instance 생성 int* p = new int; // shared_ptr int타입으로 생성 std::shared_ptr<int> shp; //shp = p; // 불가 //shared_ptr int타입으로 Heap에 Instance 생성 std::shared_ptr<int> shp1(new int(3)); shp = shp1; // 가능 shp1.reset(); return 0; } |
→ 12번째 줄처럼 불가.
당연히 shared_ptr은 class니까 하나 겠지만 서도.. -_-a
2. shared_ptr 내부를 뒤져봄
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | template<class _Ty> class _Ptr_base { // base class for shared_ptr and weak_ptr /// 중간생략 private: _Ty *_Ptr; _Ref_count_base *_Rep; template<class _Ty0> friend class _Ptr_base; }; |
→ 저기저 _Ptr이 private 이므로 접근이 불가 했음 ;;;
결론은 불가
반응형
'STLTemplate > STL & EffectiveSTL' 카테고리의 다른 글
std::string 에서 std::wstring 으로 변환 (0) | 2013.05.25 |
---|---|
기초 : C++ STL 프로그래밍(10)-알고리즘2 (0) | 2012.12.27 |
기초 : C++ STL 프로그래밍(9)-알고리즘1 (0) | 2012.12.27 |
기초 : C++ STL 프로그래밍(8)-셋(Set) (0) | 2012.12.27 |
기초 : C++ STL 프로그래밍(7)-맵(Map) (0) | 2012.12.27 |