19. 멤버 함수, 비멤버 함수 및 프렌드를 구별한다.
# 멤버함수와 비멤버 함수의 차이점
멤버 함수는 가상 함수일 수 있다.
비멤버 함수는 가상 함수가 아니다!
이유
1. 클래스의 객체가 입출력 및 사칙연산시 자연스러운 호출 되지 않아, 가독성 및 인터페이스가 영 꽝이 되기 때문이다.
예) 3 * Class Object 와 Class Object * 3 의 차이이다.
해결 방법
1. 전역 변수로 operator를 만들어 사용 한다. 이때 관리를 위해 한 클래스 해더파일에 정의하는 편이 좋다.
2. 멤버 함수로써 처리가 가능하다면 멤버 함수로만 사용하고, friend가 필요 하다면, friend로 선언해야 한다.
3. 각각의 특징과 쓰임을 파악하면 된다.
주의점
코드를 보고 이해하자.
이 문제만 해결 하면 된다.
어떻게 인자값 2가 int형 매개변수가 없는데도, 정상적으로 컴파일되고 출력 되는가?
책을 보고 난 뒤 다시 More Effective C++ 읽는 도중 햇갈려서 다시 찾아 보았다.
.. 관련 문서 : http://kldp.org/node/94059
# 멤버함수와 비멤버 함수의 차이점
멤버 함수는 가상 함수일 수 있다.
비멤버 함수는 가상 함수가 아니다!
이유
1. 클래스의 객체가 입출력 및 사칙연산시 자연스러운 호출 되지 않아, 가독성 및 인터페이스가 영 꽝이 되기 때문이다.
예) 3 * Class Object 와 Class Object * 3 의 차이이다.
해결 방법
1. 전역 변수로 operator를 만들어 사용 한다. 이때 관리를 위해 한 클래스 해더파일에 정의하는 편이 좋다.
2. 멤버 함수로써 처리가 가능하다면 멤버 함수로만 사용하고, friend가 필요 하다면, friend로 선언해야 한다.
3. 각각의 특징과 쓰임을 파악하면 된다.
주의점
코드를 보고 이해하자.
이 문제만 해결 하면 된다.
어떻게 인자값 2가 int형 매개변수가 없는데도, 정상적으로 컴파일되고 출력 되는가?
책을 보고 난 뒤 다시 More Effective C++ 읽는 도중 햇갈려서 다시 찾아 보았다.
.. 관련 문서 : http://kldp.org/node/94059
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 24. 함수 오버로딩과 디폴트 인자값 중에서 주의깊게 선택한다. (0) | 2008.05.10 |
---|---|
항목 23. 객체 반환시 레퍼런스를 반환하지 않는다. (0) | 2008.05.10 |
항목 22. 값에 의한 호출보다는 레퍼런스에 의한 호출을 선호한다. (0) | 2008.05.10 |
항목 21. 가능한 const를 이용한다. (0) | 2008.05.10 |
항목 20. 데이터 멤버를 공용 인터페이스에 포함시키지 않는다. (3) | 2008.05.09 |
항목 18. 최소한의 완전한 클래스 인터페이스를 구축한다. (0) | 2008.05.09 |
3부, 클래스와 함수 : 설계 및 선언 (0) | 2008.05.08 |
항목 17. operator=에서 재귀치환을 검사한다. (0) | 2008.05.08 |
항목 16. operator=에서 모든 데이터 멤버들로의 치환을 수행한다. (0) | 2008.05.08 |
항목 15. operator= 이 *this에 대한 레퍼런스(reference)를 리턴(return)하도록 한다. (0) | 2008.05.08 |
최근댓글