c++ 포인터변수의 참조 개수를 세고 싶습니다..

zzang3757의 이미지

제목이 좀 요상하긴한것 같은데,,

class Test
{
public
Test() {}
~Test() {}

.....
};

이런 클래스가 잇습니다..

Test* pT1 = new Test();
이렇게 객체 한개를 생성후,

Test* pT2 = pT1;

pT2라는 포인터변수로 pT1의 주소를 가리킬떄

pT1의 참조개수(?) 를 1증가시키고 싶습니다..

연산자 오버로딩 같은식으로해보려했으나,, 포인터 변수로 주소를 참조하는경우는 안되나보네요 -,-

포인터 변수로 동적으로 만들어진 객체를 참조할때마다 참조개수를 1씩 증가시키고 싶은데,,

어떠한식으로해야할지 알려주세요..

klara의 이미지

std::shared_ptr 을 구현하고 싶다는 뜻인가요?

zzang3757의 이미지

비슷하긴한데,,, shared_ptr 처럼 다른 클래스로 감싸놓게되면 = 이 연산자오버로딩이 호출되는데,,

저 위에 처럼 Test* p2 = p1; 하면 이상하게 연산자오버로딩이 호출이 안대네요.. p2는 객체가 없는 상태라 그런가..ㅜ

mirheekl의 이미지

그래서 스마트포인터들이 그냥 저런 방법들을 쓰고 있는 것.. 포인터는 타입 관계없이 랭귀지 기본형이라 연산자 오버라이딩이 안된다고 하네요.

--