본문 바로가기

Class

(2)
항목 42: typename의 두가지 의미를 제대로 파악하자. 내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 typename .. 뭐 이렇게만 보면 이런게 있었나 싶다. 하지만 템플릿에서는 흔하게 보는 키워드인데, 이 키워드에 대해서 제대로 파악하자고 하는것 같다. 처음부터 진행하자면 typename 과 class 는 똑같은 의미인데, 이렇게 말만 하면 혼동의 요지가 있으니, 코드도 포함해 주는 센스를 발휘해 본다. // ikpil.com or ikpil.tistory.com #include //template // class _T 와 같은 의미 template..
항목 28: 내부에서 사용하는 객체에 대한 '핸들'을 반환하는 코드는 되도록 피하자. 이해하기 전에 알아야 하는 핸들이란? 다른 객체에 손을 댈 수 있게 하는 매개자를 지칭하며, 참조자등의 성격을 띄우고 있다.(외부 참조) 그렇다면 왜 '핸들'을 반환하는 코드를 피하는것일까? 쉽게 말해서 클래스 내부 멤버 변수는 private 으로 해야 한다고 배웠을 것이다. 그런데 멤버 변수에 대한 포인터나 레퍼런스를 반환하게 된다면, 그것이 const 로 한다해도, 외부에서 아주 손쉽게 변환을 가할수 있는 상태가 된다. 이 상태는 바로 캡슐화가 깨진 상태가 된다. 캡슐화가 왜 중요한지는 다들 알것이므로 생략한다. 저자 역시, 핸들을 반환해야 하는 어쩔수 없는 경우에만 핸들을 반환한다고 말한다. 어찌 되었던, 클래스 private에 넣는것을 간과하여, 코딩을 하면 안된다는 것을 알려 준다. 이것만은 잊..