항목 27. 의도하지 않은 내부 생성 맴버 함수의 이용을 명시적으로 막는다.

여기서 내부 생성 멤버 함수란?
1. 생성자
2. 소멸자
3. operator=

이유
1. 메모리 릭발생 위험이 있다. (반대로 메모리 릭의 반대 경우가 생길수도 있다. 없는 메모리를 delete)
2. 기본자료형과 같은 연산을 할수 없게 된다.     2008/05/31 14:19 수정
2. 제목 그대로, 의도하지 않은 동자을 일으킬수 있다.

해결방법
1. 재정의 해 준다.
2. 이용자체를 막는다.

덧붙여 해결방법 2의 예
1. operator =와 기본 private로 선언한다.    2008/05/31 14:19 수정
1. 복사생성자와 operator= 를 재정의해주거나, private로 옮겨 정상작동하거나 동작자체를 막는다
2. 함수의 작업을 ; 로 끝낸다.
(이것으로 외부에서 =은 컴파일러가 막아 주고, 멤버함수에서 호출하거나 friend로 호출할때는 링커가 막아준다.)

개인적 생각
1. 해결방법 2로 private으로 넣는 방법은 정말 탁월하다.
2. 전역객체로 선언한 객체 역시 private 에 데이터를 모아두면, 일반적 전역변수 디버깅이 쉽다!
3. 해결방법 2의 방법중 링커가.. 오류를 찾게 되면 디버깅이 힘들어 진다.  설계 당시.. 잘해야 한다.

깊에 들어가려면 역시 설계를 잘해야 할것같다.




  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기

댓글을 달아 주세요

">