C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[60572] Re:template 멤버 함수에 대해서...
남병철.레조 [lezo] 1591 읽음    2010-03-24 00:43
템플릿 클래스가 인스턴스화 된다는것도 결국 일반 클래스가 인스턴스화 되는것과 같습니다.
다만 컴파일 타임에 그 종류가 결정되어 사용되는 모든 종류의 템플릿 클래스가 개별적인 클래스로 모두 자동 생성
됩니다.
물론 이때 인스턴스의 크기는 해당 템플릿에 사용된 데이타의 크기이며 멤버 함수는 컴파일 타임에 obj로 만들어지고
실행파일에서 최적화 여부에 따라 실행파일 크기는 다르지만 실행시 메모리에 로딩 됩니다.

흠...

한번도 호출이 안된다지만 해당 템플릿 클래스를 사용한다면 일단 obj 파일에 생성되어 메모리에 실행시 로딩됩니다.
그 로딩된 로직을 모든 해당 인스턴스가 사용하게되니...
인스턴스화로 인해 생성되지는 않지만(데이타만 인스턴스화의 크기를 갖습니다.) 컴파일 타임에 최초 로직이 생성 됩니다.
웬지 말이 빙빙 돌것 같아서 간단히 정리해 보자면.. --;

인스턴스화로 인해 멤버함수가 구체화 되지는 않고 컴파일 타임에 한번 obj로 구체화 됩니다.
즉, 선언에서 구체화 된다는 말 보다는 컴파일 타임에 선언된 템플릿 클래스들을 obj화 시킨다...
정도가 좋지 않을까요? ^^;

인스턴스 기준으로 보자면...
멤버함수는 컴파일시 결정되는 로직이지 인스턴스시에 만들어지는 구체화의 대상이 아니기 때문입니다.



김상면 님이 쓰신 글 :
: 클래스 템플릿을 만들고....
: 템플릿 클래스의 객체를 생성 했습니다.
:
: 근대 함수 템플릿은 호출의 의해 구체화 되고...
: 클래스 템플릿은 선언에 의해 구체화 됩니다.
:
: 그러면 클래스 템플릿의 객체를 선언한후...
: 이중 호출이 이루어지는 멤버함수가 있고, 어떤 멤버 함수는 한번도 호출이 안되는 멤버 함수가 있을겁니다.
:
: 한번도 호출이 안되는 멤버함수도 구체화 되는가요?
: 참으로 궁금합니다.
:
: 그럼

+ -

관련 글 리스트
60570 template 멤버 함수에 대해서... 김상면 1072 2010/03/23
60572     Re:template 멤버 함수에 대해서... 남병철.레조 1591 2010/03/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.