우선
함수 오버로딩이란?
1. 똑같은 함수이름이 두개 있다.
2. 1번의 상황에서 두 함수의 매개변수가 다르다.
3. 각각 작동이 된다.
이때 이 함수를 함수 오버로딩되었다. 라고 말한다.
디폴트 인자 값이란?
1. 매개변수에 operator = 과 목적데이터를 넣는다. 예) int f(int a = 1);
이때 1은 디폴트 인자값이다.
항목 24. 함수 오버로딩과 디폴트 인자값 중에서 주의깊게 선택한다.
이유
1. C++ 특유의 함수 오버로딩과 디폴트매개변수 사이에 모호성이 발생될 수 잇다.
- 이 모호성 때문에 컴파일 타임에 에러가 발생한다.
(컴파일러 찾아주는 오류는 너무 반갑고 기분좋다.)
2. 가독성이 떨어 진다....
해결방법
1. 자신에게 자문해 본다.
- 디폴트로 이용할 값이 있는가?
- 얼마나 많은 알고리즘들을 이용하기를 원하는가?
만약 합리적인 디폴트 값이 존재하고, 한가지의 알고리즘만 채용할 것이라면
디폴트 인자를 이용한다.
아니라면 함수 오버로딩을 이용한다.
2. 오버로딩 되는 함수의 작업이 오버로딩되는 함수끼리 공통으로 쓰는 함수등의 작업이 있다면
오버로딩을 사용하게는게 좋다.
개인적인 생각
1. 디폴트 매개변수는 생성자에서 많이 사용 되는것 같다.
2. 그 외의 경우 사용할대는 그 모호성에 대해서 충분히 고려해볼 필요가 있다.
(사실 이런 생각자체가 재미있다. .. 문제를 하나씩 찾아가서 해결을 할수 있으니까.)
3. 오버로딩 할때는 가독성을 위해서 오버로딩 되는 함수 근처에 넣거나 "이 함수는 오버로딩 함수다" 라고 표시해 두는게 좋을것이라고 생각 한다. ..
함수 오버로딩이란?
1. 똑같은 함수이름이 두개 있다.
2. 1번의 상황에서 두 함수의 매개변수가 다르다.
3. 각각 작동이 된다.
이때 이 함수를 함수 오버로딩되었다. 라고 말한다.
디폴트 인자 값이란?
1. 매개변수에 operator = 과 목적데이터를 넣는다. 예) int f(int a = 1);
이때 1은 디폴트 인자값이다.
항목 24. 함수 오버로딩과 디폴트 인자값 중에서 주의깊게 선택한다.
이유
1. C++ 특유의 함수 오버로딩과 디폴트매개변수 사이에 모호성이 발생될 수 잇다.
- 이 모호성 때문에 컴파일 타임에 에러가 발생한다.
(컴파일러 찾아주는 오류는 너무 반갑고 기분좋다.)
2. 가독성이 떨어 진다....
해결방법
1. 자신에게 자문해 본다.
- 디폴트로 이용할 값이 있는가?
- 얼마나 많은 알고리즘들을 이용하기를 원하는가?
만약 합리적인 디폴트 값이 존재하고, 한가지의 알고리즘만 채용할 것이라면
디폴트 인자를 이용한다.
아니라면 함수 오버로딩을 이용한다.
2. 오버로딩 되는 함수의 작업이 오버로딩되는 함수끼리 공통으로 쓰는 함수등의 작업이 있다면
오버로딩을 사용하게는게 좋다.
개인적인 생각
1. 디폴트 매개변수는 생성자에서 많이 사용 되는것 같다.
2. 그 외의 경우 사용할대는 그 모호성에 대해서 충분히 고려해볼 필요가 있다.
(사실 이런 생각자체가 재미있다. .. 문제를 하나씩 찾아가서 해결을 할수 있으니까.)
3. 오버로딩 할때는 가독성을 위해서 오버로딩 되는 함수 근처에 넣거나 "이 함수는 오버로딩 함수다" 라고 표시해 두는게 좋을것이라고 생각 한다. ..
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
클래스와 함수 : 구현 (0) | 2008.05.10 |
---|---|
항목 28. 전역 네임스페이스를 분활한다. (0) | 2008.05.10 |
항목 27. 의도하지 않은 내부 생성 맴버 함수의 이용을 명시적으로 막는다. (0) | 2008.05.10 |
항목 26. 잠재적 모호성을 경계한다. (0) | 2008.05.10 |
항목 25. 포인터나 수치형 타입상의 오버로딩을 피한다. (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 |
항목 19. 멤버 함수, 비멤버 함수 및 프렌드를 구별한다. (0) | 2008.05.09 |
최근댓글