|
class a
{ virtual ShowMessage()
{ MessageBox("a");
}
};
class b : public a
{ ShowMessage()
{ a::ShowMessage();
MessageBox("b");
}
}
이제는 아시겠지요
vitual은 멤버가 파생 클래스에서 새로이 정의 된다는 의미이고
이렇게 선언된 멤버는 다음과 같이 실행 하더라고 객체 생성시 지정된 클래스의 멤버가
호출됩니다.
main()
{ a* pA;
b* pB;
pA = new b(); // 클래스 b객체가 생성되어 b::ShowMessage()호출
pB = new b(); // 클래스 b객체가 생성되어 b::ShowMessage()호출
pA->ShowMessage();
pB->ShowMessage();
}
출력:
b
b
이렇게 b만 출력됩니다.
a::은 클래스이름(개체명이 아님)으로 멤버를 호출할때 사용합니다.
그럼
배우고잡당 님이 쓰신 글 :
: B++빌더에 inherited 란게 있나요??
:
: 제가 초보라.. 다시 한번 자세한 설명 부탁드립니다.
: 폼A의 Button1 을 아래와 같이 작성하였습니다.
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: ShowMessage("111");
: }
:
: 이 폼A 를 폼B가 상속받아 만들어졌습니다.
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: }
:
: 이렇게 됐을 경우 폼B의 Button1을 클릭하면
: ShowMessage("111");
: 이것이 실행되는데...
:
: 폼B에 ShowMessage("222"); 를 작성했을 경우
:
: 첫째
: ShowMessage("222"); 만 실행되는 방법.
:
: 둘째
: ShowMessage("111");
: ShowMessage("222");
: 이런 형태로 수행되는 방법
:
: 셋째
: ShowMessage("222");
: ShowMessage("111");
: 이런식으로 실행되는 방법...을 알고싶습니다.
:
: (__) 감사드립니다~
:
:
:
:
:
:
:
:
: //////////
: civilian 님이 쓰신 글 :
: : 해당 이벤트를 virtual로 선언하면 됩니다.
: : 상속받은 폼에서는 같은 이름의 이벤트를 override로 선언하고
: : 기존 기능을 수행하려면 inherited를 불러주면 됩니다.
: :
: : 배우고잡당 님이 쓰신 글 :
: : : 이제 막 씨빌더를 공부하는 사람입니다.
: : : 너무 개념이 없어 힘드네염 ;;
: : :
: : : 해보고싶은건
: : : 윈도우폼을 상속받는 것입니다.
: : :
: : : 예로 A라는 폼을 B가 상속 받았습니다.
: : : A에는 BUTTON1 이 있고
: : : 클릭이벤트에는 ShowMessage("1"); 이라고 돼 있을 경우
: : : B폼은 상속받았기 때문에
: : : B 폼의 BUTTON1을 클릭하면
: : : ShowMessage("1"); 이 실행되겠죠..
: : :
: : : 여기서 궁금한 점은요..
: : : 어떻게 코딩을 하면..
: : : ShowMessage("1");을 상속받지 않고
: : : B폼에만 있는 별도의 ShowMessage("2"); 란 것만 수행 할 수 있는지..
: : :
: : : 또,
: : : ShowMessage("1"); 을 상속받고
: : : ShowMessage("2"); 라는 명령을 실행할 수 있는지
: : :
: : : 또, 먼저
: : : ShowMessage("2"); 를 수행한 후에
: : : ShowMessage("1"); 을 수행할 수 있는지에 대한 문제 입니다.
: : :
: : : 너무 초보라...힘드네염..
: : : 자세한 설명 부탁드립니다..
: : :
: : : 오늘도 좋은 하루 되세여..~
: : :
|