클래스 연산자

클래스 메소드는 클래스 참조에 대해 동작합니다. 모든 클래스는 TObject로부터 ClassType
및 ClassParent라는 두 클래스 메소드를 상속합니다. 이 메소드들은 각각 한 객체의 클래스에
대한 참조와 한 객체의 직접 조상 클래스에 대한 참조를 리턴합니다. 두 메소드는 TClass 타입
의 값을 리턴하는데(여기서 TClass = class of TObject), 이 리턴되는 TClass 타입 값
은 더 특정한 타입으로 타입 캐스트될 수 있습니다. 또한 모든 클래스는 객체가 지정된 클래스
의 자손인지 여부를 확인하는 InheritsFrom이라는 메소드도 상속받습니다. 이러한 메소드는
is 및 as 연산자에 의해 사용되며, 이들 메소드들을 직접 호출하는 경우는 거의 없습니다.


■ is 연산자
is 연산자는 동적 타입 검사를 수행하며, 객체의 실제 런타임 클래스를 확인하는 데 사용됩니
다. 다음 표현식에서,

1.png

이 문법은 object가 class나 그 자손 클래스의 인스턴스인 경우 True를 리턴하고 그렇지 않
으면 False를 리턴합니다. object가 nil이면 결과는 False가 됩니다. object의 선언된 타입이
class와 관련이 없으면, 즉 타입이 다르고 object가 class의 자손 또는 조상이 아니면, 컴파일
에러가 발생합니다. 예를 들면, 다음과 같습니다.

2.png

이 문장은 변수가 참조하는 객체가 TEdit나 그 자손의 인스턴스인지를 먼저 확인한 후, 변수
를 TEdit로 타입 캐스트합니다.


■ as 연산자
as 연산자는 확인된 타입 캐스트(checked typecast)를 실행합니다. 다음 표현식에서,

3.png

이 문법은 object와 동일한 객체에 대한 참조를 리턴하지만, class에서 제공한 타입으로 리턴
합니다. 런타임 시 object는 class나 그 자손 클래스의 인스턴스 혹은 nil이어야 합니다. 그렇
지 않을 경우 예외가 발생합니다. object의 선언된 타입이 class와 관련이 없으면, 즉 타입이
다르고 object가 class의 자손 또는 조상이 아니면, 컴파일 에러가 발생합니다. 예를 들면, 다
음과 같습니다.

4.png

연산자 우선 순위 규칙상 as 타입 캐스트에 괄호를 사용해야 하는 경우가 많습니다. 예를 들
면, 다음과 같습니다.

5.png


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15541
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13992
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16530
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22102
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23345
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18960
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39343
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174755
123 [10.2 도쿄][릴리즈2] FireMonkey 퀵에디트로 주요 속성을 시각적으로 빠르게 설정할 수 있습니다. file 험프리 2017.12.13 377
122 [발표자료] 20171117 델파이/C++빌더 제조/제어 개발 세미나 관리자 2017.11.20 377
121 버전별 업데이트된 주요 기능들 (C++빌더6 / 델파이7부터 최신 버전까지!) 관리자 2021.01.29 376
120 [고객 사례- 솔루션, 델파이] AlignMix - 시각화된 세일즈 관리 도구 관리자 2020.05.12 376
119 MS와 엠바카데로 기술팀이 생각하는 윈도우 애플리케이션의 방향 관리자 2020.01.07 376
118 리눅스 앱에 파이어몽키에서 적용했던 스타일을 똑같이 적용하세요 - Wedgewood Light 스타일 관리자 2019.09.09 376
117 윈도우용 네이티브 앱 개발: 왜 중요할까요? 관리자 2020.01.07 374
116 [발표자료] What's NEW! RAD Studio 10.2 도쿄 험프리 2017.04.13 374
115 InstallAware - VCL 애플리케이션을 윈도우용 설치 파일로 생성 file 관리자 2020.08.28 373
114 윈도우 버전 점유율 변화: 2009년부터 2019년 현재까지! file 관리자 2019.11.18 373
113 [발표자료] 20191017 실전 사례로 살펴보는 소프트웨어 현대화 전략 file 관리자 2019.10.23 371
112 [UX Summit 요약] 터치스크린 POS 화면 디자인 하기 (Point of Sale Screen Concept) 관리자 2020.11.11 370
111 [3분 완성] C++로 안드로이드&iOS 용 사진공유앱 완성하기 관리자 2019.08.14 370
110 이 달의 기술자료 - 2019년 12월 험프리 2019.12.05 369
109 TCOFFEE & CODE WEEK 관리자 2021.02.19 368
108 이 달의 기술자료 - 2019년 10월 험프리 2019.09.27 368
107 [엠바카데로 Feature Friday]10.3.1에서의 iPhone X, iPad Pro 해상도 지원 관리자 2019.03.21 368
106 [10.2 도쿄][릴리즈3] CMake 커맨드 라인 지원 관리자 2018.03.30 367
105 이 달의 기술자료 - 2020년 12월 험프리 2020.11.26 366
104 이 달의 기술자료 - 2020년 08월 험프리 2020.07.30 366