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안에서 다른 파라미터를 받는 경우 다른 함수가 불리도록 한 것입니다
- class A
- {
- public:
- int check(int a, int b)
- {
- return a+b;
- }
int check(int a, int b, int c) - {
- return a+b+c;
- }
- };
와 같이 하면 class A에 대해서 int 파라미터 두개를 넘기든 세개를 넘기든 그 합을 얻어낼 수가 있습니다.
그런데 class A를 상속하는 class B에 대해서 check라는 함수로 다른 파라미터를 받도록 define을 하면, 자연히 A의 함수들도 쓸 수 있으면서 overloading이 될 줄 알았는데;
- class B : public A
- {
- public:
- int check(int a, int b, int c, int d)
- {
- return a+b+c+d
- }
- };
B의 instance를 만들어서 check(1, 2)를 던저 보니 컴파일 에러를 냅니다.
error: no matching function for call to ‘B::check(int, int)’
라는 군요!
상속을 하면서 그 함수명을 override해버려서 그런 모양이더라구요
살짝 구글링을 해보니, 그렇게 쓰고 싶으면 using A::check을 붙여야 한다고 하네요. 아래처럼요
- class B : public A
- {
- public:
- int check(int a, int b, int c, int d)
- {
- return a+b+c+d
- }
- using A::check;
- };
이상, 삽질기 끝;
덧, Java에서는 상속에서도 overloading이 잘 됩니다 @_@/
덧2, C++ 개발자가 몇명이나 이 블로그에 올까요 -_-; 손?
- Tagged :
- C++ Function Overloading Inheritance 상속
Trackbacks : 0
Trackback URL : http://seungyeop.kr/blog/11628/e2a/trackback


2008.07.03 at 15:36:24 댓글 | |
음, A::sum이 아니고 A::check를 의도하셨던 거겠지요?;;
그나저나 C++에서는 저런 특성이 있는지 몰랐군요..
2008.07.03 at 16:26:19 댓글
앗; 함수이름을 고쳐서 올리다가 저부분은 안 고쳤네요 ㅎㅎ
고쳐놨음 ㅎㅎ/
2008.07.03 at 17:53:19 댓글 | |
사실 개발자는 아니고 '관리자'라서 디자인(이라 말하고 문서라고 읽는) 일만 하지만..;;
그래도 젊을 때 고생이라고, 직접 부딪혀보고 싶어서 발버둥치다보니,
얼마전에는 core algorithm과 unit test에 대한 prototype을 작성해서 업체에 줬음! +_+
아마 좀 극성스러운 갑으로 보였으려나 =ㅅ=
게다가 due 없이 일을 하다보니, 내 깐에 알흠다운 코드 좀 써 본다고
template, op. overloading, template specialization으로 잔뜩 치장하고
논문에 나온 수식이랑 똑같이 생긴 코드 만들고 히죽거렸는데, 아마 변태로 보였을꺼야. ㄷㄷㄷ
근데 요즘엔 또 DB 디자인 같은거 하고 있어. 이거 없어진 전산학개론도 아니고 ㅡ.ㅜ
2008.07.04 at 10:11:34 댓글
ㅎㅎ 레드레공씨다워. 요즘엔 아름다운 코드가 별로 안 땡긴다. Readability가 떨어지는 것 같기도 =_ =
2008.07.04 at 13:44:12 댓글 | |
업무에서 C++ 안써본지가 수년 된거 같아요 @.@
p.s1 오랜만입니다 @.@
p.s2 근데 이 댓글 창.. 혹시 사파리에서 테스트 해보셨어요?
2008.07.04 at 14:13:47 댓글
엇 사파리에서 안되나요?-
집에서는 아이맥+사파리를 쓰는데; 댓글을 잘 안 쓰다보니 @_@a
2008.07.05 at 13:05:04 댓글 | |
전 C++ 코딩 x라 하고 있죠 ㅋㅋ
2008.07.07 at 07:54:49 댓글
으허허 C++코더 화이팅
2009.06.05 at 21:33:08 댓글 | |
나도 2005년까지는 C++ 개발자였다는.. 2006년에 석사 CG 플젝을 마지막으로 접은 코딩;;