Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
Override 진정으로 필요한가?
다형성을 시험하던 중에,
virtual, override Keyword를 사용하지 않아도 다형성이 이루어지더군요.
그렇다면 왜 이런 키워드가 필요한 것인가요?
단지 나중에 코드의 가독성을 높이기 위한 것일까요?
(물론, 가독성 어~~~엄~~~첨 중요하다는 것 인정합니다).
2
COMMENTS
최용일
•
2005.12.04 07:24
안녕하세요. 최용일입니다.
이상하네요.. 저는 암만해도 virtual,override를 사용하지 않으면 다형성이 이루어지지 않던데 이상하네요...
진짜로 다형성을 테스트했는지 의문입니다. 아래 두개의 코드를 테스트해보세요...
virtual을 사용하지 않으면 정적으로 링크되기 때문에 다형성이 이루어질 수가 없습니다.
<!--CodeS-->
사용안할때
type
TDraw = class(TObject)
public
procedure Show;
end;
TLineDraw = class(TDraw)
public
procedure Show;
end;
TRectDraw = class(TDraw)
public
procedure Show;
end;
implementation
{ TDraw }
procedure TDraw.Show;
begin
ShowMessage('TDraw.Draw');
end;
{ TLineDraw }
procedure TLineDraw.Show;
begin
ShowMessage('TLineDraw');
end;
{ TRectDraw }
procedure TRectDraw.Show;
begin
ShowMessage('TRectDraw');
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
Draw: TDraw;
begin
Draw := TLineDraw.Create;
try
Draw.Show; // Shows 'TDraw.Show'
finally
Draw.Free;
end;
Draw := TRectDraw.Create;
try
Draw.Show; // Shows 'TDraw.Show'
finally
Draw.Free;
end;
end;
<!--CodeE-->
<!--CodeS-->
사용할때
type
TDraw = class(TObject)
public
procedure Show; virtual;
end;
TLineDraw = class(TDraw)
public
procedure Show; override;
end;
TRectDraw = class(TDraw)
public
procedure Show; override;
end;
implementation
{ TDraw }
procedure TDraw.Show;
begin
ShowMessage('TDraw.Draw');
end;
{ TLineDraw }
procedure TLineDraw.Show;
begin
ShowMessage('TLineDraw');
end;
{ TRectDraw }
procedure TRectDraw.Show;
begin
ShowMessage('TRectDraw');
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
Draw: TDraw;
begin
Draw := TLineDraw.Create;
try
Draw.Show; // Shows 'TLineDraw.Show'
finally
Draw.Free;
end;
Draw := TRectDraw.Create;
try
Draw.Show; // Shows 'TRectDraw.Show'
finally
Draw.Free;
end;
end;
<!--CodeE-->
^^ 항상 즐코하세요...
0
0
댓글
쿠나
•
2005.12.20 02:46
답변 감사드립니다.
답변이 없어서 그동안 살펴보지 않았는데... 답변을 해 주셨군요 ^^;
한번 해 보고 답변드리겠습니다 그럼 꾸벅
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
정대준
•
2005.12.06 00:19
•
1
COMMENTS
/
0
LIKES
툴바를 수직으로 배열할 수가 있나요?
이희진
•
2005.12.06 03:14
쿨바 (Vertical=True) 위에 다시 툴바를 얹어보세요.
coolkkm
•
2005.12.05 22:53
2
COMMENTS
/
0
LIKES
csv 를 이용한 엑셀 출력시 텍스트 형식 방법 좀 알려주세요?
Marek
•
2005.12.06 05:00
Marek입니다. 아래와 같이 해보세요. var v: Variant; i, j, x, y, int...
coolkkm
•
2005.12.07 22:50
임형준
•
2005.12.05 20:11
1
COMMENTS
/
0
LIKES
TEdit의 Text변경할때 이벤트가 일어나지 않게 하는법?
아폴론
•
2005.12.05 20:41
필요한 시점에 이벤트 멈추기 Edit1.OnChange := nil; 필요한 시점에 이벤트 살리기 Edit1.OnChan...
해피엔드
2005.12.05 18:25
0
COMMENTS
/
0
LIKES
innosetup으로 파이어버드 배포시에...
최은석
2005.12.05 07:27
0
COMMENTS
/
0
LIKES
스트링그리드에 생성한 체크박스 삭제하기
양승원
2005.12.05 05:58
0
COMMENTS
/
0
LIKES
DB관련 오류
박성준
2005.12.04 18:44
0
COMMENTS
/
0
LIKES
델파이7 Check 908페이지 내용중
조태건
2005.12.04 06:02
0
COMMENTS
/
0
LIKES
*.txt 화일을 TTable 에 읽어 들이는 방법 질문입니다.
이호림
•
2005.12.04 04:37
2
COMMENTS
/
0
LIKES
델파이 2005에서 디버깅시 시스템 다운 됩니다...
마이
•
2006.02.11 23:19
저도 얼마전 같은 증상을 경험하고 별짓 다해 봤네요. ^^; 결과부터 말씀드리면...시스템복구로 해결했...
Diablo
•
2005.12.06 04:40
혹시 ~~~~ ! 디버깅 시작할때 폼디자인이 보이는 상태인가요? 소스코드가 보이는 상태인가요? 저...
푸크크
2005.12.04 03:29
0
COMMENTS
/
0
LIKES
간단한 채팅프로그램인데요.
쿠나
•
2005.12.04 00:30
2
COMMENTS
/
0
LIKES
Override 진정으로 필요한가?
다형성을 시험하던 중에, virtual, override Keyword를 사용하지 않아도 다형성이 이루어지더군요. 그렇다면 왜 이런 키워드가 필요한 것인가요? 단지 나중에 코드의 가독성을 높이기 위한 것일까요? (물론, 가독성 어~~~엄~~~첨 중요하다...
최용일
•
2005.12.04 07:24
안녕하세요. 최용일입니다. 이상하네요.. 저는 암만해도 virtual,override를 사용하지 않으면 다형성이 ...
쿠나
•
2005.12.20 02:46
답변 감사드립니다. 답변이 없어서 그동안 살펴보지 않았는데... 답변을 해 주셨군요 ^^; 한번 해 보...
최영식
2005.12.04 00:07
0
COMMENTS
/
0
LIKES
DBGRID에서 힌트를 마우스 이동할
최영식
2005.12.04 00:06
•
0
COMMENTS
/
0
LIKES
Indy 10.76버젼을 사용하는데요 자꾸 에러가 나서문의드립니다.
Atom
•
2005.12.03 21:37
1
COMMENTS
/
0
LIKES
sender 와 activecontrol 의 차이점이 뭔지요??
최용일
•
2005.12.06 20:08
안녕하세요. 최용일입니다. 차이점이라... 두개가 별개의 것이라서 뭐가 차이점인지는 잘 모르겠네요......
아폴론
2005.12.03 03:07
0
COMMENTS
/
0
LIKES
델파이7으 인스톨실드에서 BDE설정 어찌 하나요?
박상범
2005.12.03 02:44
0
COMMENTS
/
0
LIKES
Id TCP서버 관련
김영대
•
2005.12.03 00:47
4
COMMENTS
/
0
LIKES
메일 발송에 대한 질문...
라벤더
•
2005.12.03 18:18
안녕하세요 ^^ 으음.. 제가 보기엔 소스상에는 아무런 문제가 없는 것 같아요.. 뭔가 이상하다..싶어...
김영대
•
2005.12.03 18:50
답변 감사합니다.^^ 오늘 윗지방은 눈이 온다고 하던데...부럽습니다...^^ 부산은 눈 구경하기가 힘들어...
겨울이
•
2005.12.03 21:45
김영대님의 사이트에서 많은 도움을 받는사람인지라..몇자 올립니다. 그 분이 맞는지는 모르겠지만요. ...
김영대
•
2005.12.05 18:18
ㅎㅎ 전 개인홈피를 운영하고 있는 그 김영대님이 아니랍니다.^^ 저도 동명이인이신분의 홈피에서 좋은 ...
Robin
•
2005.12.02 22:31
1
COMMENTS
/
0
LIKES
작업표시줄과 ALT+TAB 는 안보이고 FORM 은 보이게 는 할수 없나요
KDDG_BaSTaD
•
2005.12.03 01:13
=> 안녕하세요... 메인폼이 아닌 다른 폼이라면 taskbar 에는 표시되지 않습니다. Alt+tab에 나...
권대길
•
2005.12.02 20:11
1
COMMENTS
/
0
LIKES
UDP로 MPEG4 영상 프레임 전송방법
권태훈
•
2005.12.02 23:55
H.26X를 보시면 답이 나올성 같은데요. 실무에서도 I 프레임 깨지면 화면 검게 나옵니다. 로스뿐만 ...
토니
•
2005.12.02 19:03
1
COMMENTS
/
0
LIKES
프로그램 실행중에 테이블을 생성하고 입력하고 SQL문을 적용해서 데이타를 추출하고 싶은데...
채팅
•
2005.12.02 19:14
무료 컴포넌트로 그런 기능을 지원하는 것은 아직 본적이 없는 것 같습니다. 지금까지 나온 메모리테이...
쿠나
2005/12/04 00:30
Views
393
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
이상하네요.. 저는 암만해도 virtual,override를 사용하지 않으면 다형성이 이루어지지 않던데 이상하네요...
진짜로 다형성을 테스트했는지 의문입니다. 아래 두개의 코드를 테스트해보세요...
virtual을 사용하지 않으면 정적으로 링크되기 때문에 다형성이 이루어질 수가 없습니다.
<!--CodeS-->
사용안할때
type
TDraw = class(TObject)
public
procedure Show;
end;
TLineDraw = class(TDraw)
public
procedure Show;
end;
TRectDraw = class(TDraw)
public
procedure Show;
end;
implementation
{ TDraw }
procedure TDraw.Show;
begin
ShowMessage('TDraw.Draw');
end;
{ TLineDraw }
procedure TLineDraw.Show;
begin
ShowMessage('TLineDraw');
end;
{ TRectDraw }
procedure TRectDraw.Show;
begin
ShowMessage('TRectDraw');
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
Draw: TDraw;
begin
Draw := TLineDraw.Create;
try
Draw.Show; // Shows 'TDraw.Show'
finally
Draw.Free;
end;
Draw := TRectDraw.Create;
try
Draw.Show; // Shows 'TDraw.Show'
finally
Draw.Free;
end;
end;
<!--CodeE-->
<!--CodeS-->
사용할때
type
TDraw = class(TObject)
public
procedure Show; virtual;
end;
TLineDraw = class(TDraw)
public
procedure Show; override;
end;
TRectDraw = class(TDraw)
public
procedure Show; override;
end;
implementation
{ TDraw }
procedure TDraw.Show;
begin
ShowMessage('TDraw.Draw');
end;
{ TLineDraw }
procedure TLineDraw.Show;
begin
ShowMessage('TLineDraw');
end;
{ TRectDraw }
procedure TRectDraw.Show;
begin
ShowMessage('TRectDraw');
end;
procedure TfrmMain.Button1Click(Sender: TObject);
var
Draw: TDraw;
begin
Draw := TLineDraw.Create;
try
Draw.Show; // Shows 'TLineDraw.Show'
finally
Draw.Free;
end;
Draw := TRectDraw.Create;
try
Draw.Show; // Shows 'TRectDraw.Show'
finally
Draw.Free;
end;
end;
<!--CodeE-->
^^ 항상 즐코하세요...