C++ function overloading, inheritance

Document URL : http://seungyeop.kr/blog/11628
Posted on July 03rd, 2008 at 14:13 by haneul | Modify

오늘의 점심블로깅은 간만에 코딩 이야기입니다.

며칠전에 인터페이스 새 버전을 디자인하다가 C++을 다시 공부하는 사태-_-가 벌어져서 기록을 남겨둡니다; 어찌되었던 저의 Job position은 C++ 개발자인데 말이에요 ㅎㅎ

 

C++을(혹은  학교에서 배우신 분이라면 Function Overloading을 들어봤을텐데요. 한 Class안에서 다른 파라미터를 받는 경우 다른 함수가 불리도록 한 것입니다

  1. class A
  2. {
  3. public:
  4. int check(int a, int b)
  5. {
  6. return a+b;
  7. }

    int check(int a, int b, int c)
  8. {
  9. return a+b+c;
  10. }
  11. };

와 같이 하면 class A에 대해서 int 파라미터 두개를 넘기든 세개를 넘기든 그 합을 얻어낼 수가 있습니다.

 

그런데 class A를 상속하는 class B에 대해서 check라는 함수로 다른 파라미터를 받도록 define을 하면, 자연히 A의 함수들도 쓸 수 있으면서 overloading이 될 줄 알았는데;

  1. class B : public A
  2. {
  3. public:
  4. int check(int a, int b, int c, int d)
  5. {
  6. return a+b+c+d
  7. }
  8. };

B의 instance를 만들어서 check(1, 2)를 던저 보니 컴파일 에러를 냅니다.

 error: no matching function for call to ‘B::check(int, int)’

라는 군요!

상속을 하면서 그 함수명을 override해버려서 그런 모양이더라구요

살짝 구글링을 해보니, 그렇게 쓰고 싶으면 using A::check을 붙여야 한다고 하네요. 아래처럼요

  1. class B : public A
  2. {
  3. public:
  4. int check(int a, int b, int c, int d)
  5. {
  6. return a+b+c+d
  7. }
  8. using A::check;
  9. };

이상, 삽질기 끝;

 

덧, Java에서는 상속에서도 overloading이 잘 됩니다 @_@/

덧2, C++ 개발자가 몇명이나 이 블로그에 올까요 -_-; 손?

Tagged :
       

Trackbacks : 0

Trackback URL : http://seungyeop.kr/blog/11628/e2a/trackback

Comments : 9

Author daybreaker
2008.07.03 at 15:36:24
댓글 | |

음, A::sum이 아니고 A::check를 의도하셨던 거겠지요?;;

그나저나 C++에서는 저런 특성이 있는지 몰랐군요..

Author haneul
2008.07.03 at 16:26:19
댓글

앗; 함수이름을 고쳐서 올리다가 저부분은 안 고쳤네요 ㅎㅎ

고쳐놨음 ㅎㅎ/

Author redragon
2008.07.03 at 17:53:19
댓글 | |

사실 개발자는 아니고 '관리자'라서 디자인(이라 말하고 문서라고 읽는) 일만 하지만..;;

그래도 젊을 때 고생이라고, 직접 부딪혀보고 싶어서 발버둥치다보니,

얼마전에는 core algorithm과 unit test에 대한 prototype을 작성해서 업체에 줬음! +_+

아마 좀 극성스러운 갑으로 보였으려나 =ㅅ=

게다가 due 없이 일을 하다보니, 내 깐에 알흠다운 코드 좀 써 본다고

template, op. overloading, template specialization으로 잔뜩 치장하고

논문에 나온 수식이랑 똑같이 생긴 코드 만들고 히죽거렸는데, 아마 변태로 보였을꺼야. ㄷㄷㄷ

근데 요즘엔 또 DB 디자인 같은거 하고 있어. 이거 없어진 전산학개론도 아니고 ㅡ.ㅜ

Author haneul
2008.07.04 at 10:11:34
댓글

ㅎㅎ 레드레공씨다워. 요즘엔 아름다운 코드가 별로 안 땡긴다. Readability가 떨어지는 것 같기도 =_ =

Author iron
2008.07.04 at 13:44:12
댓글 | |

업무에서 C++ 안써본지가 수년 된거 같아요 @.@

 

p.s1 오랜만입니다 @.@

p.s2 근데 이 댓글 창.. 혹시 사파리에서 테스트 해보셨어요?

Author haneul
2008.07.04 at 14:13:47
댓글

엇 사파리에서 안되나요?-

집에서는 아이맥+사파리를 쓰는데; 댓글을 잘 안 쓰다보니 @_@a

Author U.Seung
2008.07.05 at 13:05:04
댓글 | |

 전 C++ 코딩 x라 하고 있죠 ㅋㅋ   

Author haneul
2008.07.07 at 07:54:49
댓글

으허허 C++코더 화이팅

Author 속눈썹맨
2009.06.05 at 21:33:08
댓글 | |

나도 2005년까지는 C++ 개발자였다는.. 2006년에 석사 CG 플젝을 마지막으로 접은 코딩;;