이게 난이도 6 인가, : ) 한 8쯤 되는줄 알았는데, 더 정진해야겠다. 이번 항목을 클래스안에서 적용 될 것을 계산하여 스마트 포인터를 만들어 보는 항목이다. 알다 시피 클래스 안에서 스마트 포인터를 사용 할 때는 다음 4가지 경우를 반드시 생각해 봐야 한다. 첫째, 클래스의 생성자에서 어떻게 작동 하게 할 것인가? 둘째, 클래스의 소멸자에서 어떻게 작동 하게 할 것인가? 셋째, 클래스의 복사 생성자에서 어떻게 작동 하게 할 것인가? 넷째, 클래스의 복사 할당자에서 어떻게 작동 하게 할 것인가? 이번 항목은 이렇게 질문 4개에 대한 답변들로 이루어 졌다. 일전에 babo_ptr을 제작해보았던 터라 이 문제에 대해서 생각하여, 그 대처 방안으로 썼었는데, 다시 정리 하려 하니 귀찮다. 왜냐하면 결론을 ..
smart_ptr 검색 결과
알다 시피 C++ 프로그래머에게 있어, 클래스의 멤버가 pointer 일 경우 각별한 주의가 필요로 한다는 것은 알 것이다. 그렇다면, 영리한 포인터 녀석들을 넣을 경우, 생길 수 있는 문제점을 알고 있는가? 이번 항목은 그런 문제에 대해서 이야기 하고 생각해 보는 시간을 갖기 위해 존재 한다. 질문 1. 다음 코드가 매우 불안한 이유는? class X1 { ~X1() { delete p_ } X1( int * p ) p_( p ) { } // 컴파일러가 만들어 주는 복사 생성자와 // 복사 할당자를 이용 한다. private: int *p_; }; 단번에 알겠지만, 메모리 누수가 일어 나거나, 두번 릴리즈 하게 된다. 질문 2. 그렇다면 스마트 포인터를 사용 한다면, 어떤 문제가 있을까? class X..
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 이번 항목은 "클래스 멤버 함수가 호환되는 모든 타입을 받아 들이기 위해선 템플릿을 사용하면 편하다" 를 주제로 이야기 한다. 템플릿의 특성은 "여러 타입의 변수에 있어 하나의 코드로 대응 시킬 수 있다" 이다. 이것은 "모든 타입"에 대해서 동일한 코드로 대응 시킬수 있다는 뜻인데.. 하필이면 "호환되는 모든 타입" 이다. 호환되는 모든 타입이라.. 무슨 뜻일까? 예제코드 1, 호환성이 이해가 될 것이다. // ikpil.com or ikpil.tist..
최근댓글