[ CnUnix ] in KIDS 글 쓴 이(By): diploid ( 2n) 날 짜 (Date): 2006년 9월 10일 일요일 오후 12시 19분 36초 제 목(Title): C++ virtual function.. 클래스 BB로부터 클래스 DD를 파생시켰읍니다. BB.print(..)를 virtual로 선언하고 DD.print(..)를 재정의 했는데 함수의 인수를 다르게해서 정의 하려하는데, 이렇게 하면 BB의 포인터로 DD.print(..)를 호출하려고 하는데 BB.print(..)가 호출이 됩니다. 함수의 인수를 같게 하면 DD.print(..)가 호출이 되는데 말이죠... 함수의 인수를 다르게 해서 virtual function을 정의할수는 없읍니까? 아래의 예에서 "DD.print() called"를 화면에 출력하고 싶은데 "BB.print() called"가 출력이 됩니다. 함수의 인수를 다르게 정의하면서 "DD.print() called"를 출력하는 방법 없을까요? 답변 미리 감사드립니다. ----- class B { public: }; class D : public B { public: }; class BB { public: virtual void print(const B& b) {std::cout<<"BB.print() called.";}; }; class DD:public BB { public: virtual void print(const D& d) {std::cout<<"DD.print() called.";}; }; int main(void) { D d; BB* pb; pb = new DD; pb->print(d); delete pb; return 1; } |