항목 38. 계승된 부재 인자값을 재정의하지 않도록 한다.
여기서 계승된 메소드는
가상함수일때로 국한한다는 전제조건이 따른다.
부재 인자값(default argument)이란?
기본 인자값을 말한다 (void hehehe(int a = 1); 여기서 a가 기본 인자다. 사실 부재인자도 맞는 말이다.)
2008/07/16 15:06:11 추가, 영문 표기가 오히려, 한글 표기보다 직관적일 경우가 많이 있는것 같다.
이유
1. 부모클래스의 메소드에서 설정했던 기본 인자값으로
... 자식클래스의 메소드에서 기본 인자값이
... 자동 셋팅 되기 때문이다. 2008/07/16 15:06:11 수정
1. 부모 클래스에서 멤버 함수의 디폴트 매개변수는 정적바인딩 되기 때문에 동적 바인딩 되는 멤버 함수가 호출되더라도, 정적 바인딩되었던 멤버 함수의 디폴트 매개변수를 호출하기 때문이다. 자세한 내용은 트랙백에 표기해 둔다,
해결 방법
1. 부모 클래스에서 선언했다면, 자식클래스에 영향을 미치므로 자식클래스에선 사용치 마라
- .. 사용해도 어차피 안된다! 2008/07/16 15:06:11 수정, 되긴 한다.
2. 가상함수는 동적 결합을 하지만, 기본 인자값(부재인자값)은 정적 결합됨을 이해해라!
참조 : 정적 결합과 동적 결합이란?
정적 결함
1. pS, pR, pE 는 CShape*로 정적 결합 했다고 말한다. 즉 이들의 형태는 소멸되기 전까지 CShape* 형이다.
2. 캐스팅 변환으로 임시로 변환 할수는 있다.
동적 결합(포인터나 레퍼런스에 한해서다)
1. pS, pR, pE가 가리키는 대상에 따라 바뀐다.
개인적 생각
1. 보물이다. 한번쯤 테스트 하고 넘어가자.
2. C++이 왜 이렇게 특이하게 동작하는지 .. 열 받는다면, .. 당신의 선택은 두개뿐이다.
첫째, 다른 언어로 간다.
둘째, 다른 언어를 만든다.
셋째, 원래 그런거다 라고 인정한다.
여기서 계승된 메소드는
가상함수일때로 국한한다는 전제조건이 따른다.
부재 인자값(default argument)이란?
기본 인자값을 말한다 (void hehehe(int a = 1); 여기서 a가 기본 인자다. 사실 부재인자도 맞는 말이다.)
2008/07/16 15:06:11 추가, 영문 표기가 오히려, 한글 표기보다 직관적일 경우가 많이 있는것 같다.
이유
1. 부모클래스의 메소드에서 설정했던 기본 인자값으로
... 자식클래스의 메소드에서 기본 인자값이
... 자동 셋팅 되기 때문이다. 2008/07/16 15:06:11 수정
1. 부모 클래스에서 멤버 함수의 디폴트 매개변수는 정적바인딩 되기 때문에 동적 바인딩 되는 멤버 함수가 호출되더라도, 정적 바인딩되었던 멤버 함수의 디폴트 매개변수를 호출하기 때문이다. 자세한 내용은 트랙백에 표기해 둔다,
해결 방법
1. 부모 클래스에서 선언했다면, 자식클래스에 영향을 미치므로 자식클래스에선 사용치 마라
- .. 사용해도 어차피 안된다! 2008/07/16 15:06:11 수정, 되긴 한다.
2. 가상함수는 동적 결합을 하지만, 기본 인자값(부재인자값)은 정적 결합됨을 이해해라!
참조 : 정적 결합과 동적 결합이란?
정적 결함
1. pS, pR, pE 는 CShape*로 정적 결합 했다고 말한다. 즉 이들의 형태는 소멸되기 전까지 CShape* 형이다.
2. 캐스팅 변환으로 임시로 변환 할수는 있다.
동적 결합(포인터나 레퍼런스에 한해서다)
1. pS, pR, pE가 가리키는 대상에 따라 바뀐다.
개인적 생각
1. 보물이다. 한번쯤 테스트 하고 넘어가자.
2. C++이 왜 이렇게 특이하게 동작하는지 .. 열 받는다면, .. 당신의 선택은 두개뿐이다.
첫째, 다른 언어로 간다.
둘째, 다른 언어를 만든다.
셋째, 원래 그런거다 라고 인정한다.
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 43. 다중 계승을 바르게 사용하도록 하라 (1) | 2008.05.14 |
---|---|
항목 42. private 계승을 바르게 사용하라. (0) | 2008.05.14 |
항목 41. 계승과 템플릿과의 차이점을 이해한다. (0) | 2008.05.14 |
항목 40. 레이어링을 통해 가지고 있는 것과 사용하여 구현된것을 모델링하도록 한다. (0) | 2008.05.12 |
항목 39. 계층도의 아래쪽 클래스로 다운캐스트 하지 않도록 한다. (0) | 2008.05.12 |
항목 37. 계승된 비가상 함수를 재정의하지 않도록 한다. (2) | 2008.05.12 |
항목 36. 인터페이스 계승과 구현의 차이점을 이해해라 (0) | 2008.05.12 |
항목 35. public 계승이 isa를 모델링하도록 하라. (0) | 2008.05.11 |
인스턴스와 객체지향 설계 (0) | 2008.05.11 |
34. 파일간의 컴파일 의존성을 최소화 하라 (0) | 2008.05.11 |
최근댓글