|
김성규 입니다.
음.. 흔히 만나는 경우죠.. 저라면..
1. 구형밥솥 클래스에서 "가열시간"을 맨 앞으로 빼고 모든 파라미터에 Default 값을 준다.
그리고 구형밥솥을 사용할때는 다른 모든 파라미터들을 같이 보내주고, 일반형에서는 가열시간만
보내주고, 최신형은 모두 Default 값을 사용한다.. ㅋㅋㅋ
: class 추상밥솥
: {
: public:
: virtual void Make죽밥(int 가열시간 = 1시간, float 쌀용량 = 100.0g, float 물용량 = 1.0l, ...각종 조건 파라미터들...);
...
};
2. 추상밥솥이 모두 수용할 수 있도록 대빵크게 만든다. 파라미터가 틀리니 오버로딩이 되져..
: class 추상밥솥
: {
: public:
: virtual void Make죽밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
: virtual void Make꼬두밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
: virtual void Make보통밥(float 쌀용량, float 물용량, int 가열시간...각종 조건 파라미터들...);
: virtual void Make죽밥(int 가열시간);
: virtual void Make꼬두밥(int 가열시간);
: virtual void Make보통밥(int 가열시간);
: virtual void Make죽밥();
: virtual void Make꼬두밥();
: virtual void Make보통밥();
: };
3. 프로퍼티를 도입한다. 이건 노가다..
: class 추상밥솥
: {
: public:
: virtual void Make죽밥();
: virtual void Make꼬두밥();
: virtual void Make보통밥();
__property int 쌀용량 = {read=......};
.....
: };
저는 보통 2번을 많이 씁니다.
실제 구현도 파라미터 많이 있는것만 구현하고.. 다른 형 함수에서는 기본값으로 호출해주는 걸로 구현..
: virtual void Make죽밥(int A가열시간) { Make죽밥(, , A가열시간, ...); }
: virtual void Make죽밥() { Make죽밥(, , , ...); }
1번은 꽁수.. 함수에 파라미터 하나더 추가해야 하는데 고치면 고쳐야할 곳이 엄청 많을때...
애초부터 생각하고 들어가면 3번을 많이 쓰죠. 델파이습관에 젖어서리..
기본적으로 C++에서의 상속과, Overloading, Overriding, Virtual등에서 헷갈리시는 것 같군요.
|