적어주신 사이트의 내용은 벌써보았습니다
제가 궁금한건 virtual이라는 것을 제가 직접 오버라이딩해서 vitual을 직접 구현한다면 구성을 어떻게 해야
되는것인지 그것이 궁금합니다...
둘리.CSIEDA 님이 쓰신 글 :
: 가상함수 (virtual) 는 OOP 의 다형성을 구현하기 위한 좋은 방법 입니다.
: 사실 가상이라는 이름을 붙였을뿐 엄밀히 말하면 "동적결합 함수"라고 하는게 이해가 더 쉽습니다.
: 별로 주의할 점은 없고요, 만약 memory 관리부분에 있어서 class destructor 를 virtual 로 해 주는 정도?
: 주의점(항상은 아니고) 이라 할 수 있겠죠.
:
: 다음과 같은 예에서 (정확한 c++ 문법은 아닙니다)
:
: class A
: {
: A() { init(); }
: virtual void init(){}
: }
:
: class B : A
: {
: char *p;
: B() { p = new char[256]; }
: void init() { strcpy(p,"Hello"); }
: }
:
: 위의 경우 주의 해야 합니다.
: B b; 라고 b 객체를 만드는 순간, 프로세스의 흐름은 우선 A 의 constructor로 들어가며 여기서 init() 함수를
: 호출하게 되는데 이것이 A 의 init() 가 아니라 B 의 init() 를 호출하게 됩니다. 이경우 아직 B의 constructor를
: 수행하지 않은 상태이기 때문에 p 가 아직 정의 되어 있지 않기 때문에 에러를 냅니다.
: 주의해야할 간단한것중 하나 입니다.
:
:
: http://www.winapi.co.kr/ 의 C++ 강좌 , 제 30장 다형성 에 설명이 잘 되어 있습니다.
: 참고해 보시기 바랍니다.
:
:
:
:
:
: 문의드립니다 님이 쓰신 글 :
: : 가상함수를 가진 클래스의 메모리에 가상함수 포인터 테이블을 가리치는 포인터를
: : 가지고 있고 실행 중에 그 가상 함수 테이블 주소에 있는 함수를 실행 한다고 알고 있습
: : 니다...
: :
: : 그런데 virtual을 제가 직접 만든다면 어떤 부분을 신경써야될까요??
: : virtual을 직접 만든다고 했을 때 막상 구현을 그려보니 머리가 멍해지네요...
: :
: : 고수님들의 조언 부탁드립니다...ㅠㅜ
|