참조 카운트란 무엇인가
내 포인터를 얻어갈 때 마다 카운트를 1 증가 시키고
얻어간 포인터를 해제할때 카운트를 확인하고 0이라면 삭제하고 0이 아니라면 카운트를 1 감소 시키기만 한다.
객체의 포인터를 관리하면 스마트 포인터 만들 수 있다.
이녀석을 상속 받아서 클래스를 만들고 포인터를 저장해야 할때 저장하고 AddRef를 호출해 증가시키며 관리한다.
빌려간 포인터를 다쓰면 Release를 호출해주면 된다.
일일이 AddRef를 하는 건 뭔가 번거로운 거 같아서...
operator= 를 이용해 AddRef를 호출해주려고 해봤는데 잘 안됨....ㅠ
pObj2 = pObj를 애초에 생각을 잘 못 한거 같다.
결국, AddRef를 호출하면서 씀...ㅠㅠ
만들어 보면서 포인터에 대해서 다시 생각해보게 되었다.
포인터에 operator=가 있을 리가 없지... 결국, 포인터가 내가 만든 연산자를 수행하는 건 말이 안 됐음.
그래서 다시 생각해서 만들어봤다.
원본객체에 operator= 포인터를 넣어주면 AddRef를 호출하고 원본객체의 주소를 받아오는 식으로 해봤다.
결국 만들긴 했지만 내가 원했던 그림이 아니다.
pObj2 = pObj;를 원했는데.....윽
참고로 pObj = pObj2; 이렇게 쓰면 안 됨, 포인터 = 포인터로 됨.
느낀점: 포인터에 대해서 잘 못 알고 있었단 걸 알게 됐다.
끝.
반응형
'Programming > Blah Blah' 카테고리의 다른 글
MFC 뷰 분활후 다이얼로그 열기 (0) | 2016.08.11 |
---|---|
OnIdle 함수를 이용해 MFC 메시지 루프 만들기 (0) | 2016.08.08 |
빌드 이벤트(전, 후), 빌드 종속성(빌드순서) (0) | 2016.07.30 |
dll 만들기 (0) | 2016.07.12 |
개발용 폰트 (0) | 2016.07.07 |
얼랭(함수형 언어) 사용해보기 (0) | 2016.04.04 |
포커스 핸들 컨트롤 하기(GetFocus & SetFocus) (0) | 2016.03.28 |
#region(리전) 간단설명 (0) | 2016.03.27 |