템플릿 정의하기에서 정의하는 방법을 정리했다. 정리 되는 도중에 한가지 의문점이 생기는데, 그 의문점은 "도데체 언제 템플릿들이 코드화가 이루어 지는 것일까?" 이다. 당연한 이야기 겠지만, 컴파일러에 의해서 링크가 되기 전에 이루어 질 것이지만, 정확한 시점을 모르면 약간 어리 둥절할 때가 있기 떄문이다. 이 어리둥절함은 컴파일 타임이라는게 전처리기 타임이라는 것도 있고 이진코드 생성 타임도 있고, 문법 검사 타임도 있고, .. 여러 타임이 나누어져 있기 때문에, 템플릿 인스턴스화의 시점에 따라서 템플릿 코드가 달라 질 수 있어, 어리 둥절 하게 된다. 그렇다면, "템플릿 인스턴스화" 란 무엇인가? 템플릿 매개변수에 인자를 넘겨서 클래스 선언을 만드는 과정을 "템플릿 인스턴스화" 라고 한다. 이런 인스..
템플릿 검색 결과
파트 2에선 함수 템플릿을 알아 봤다면, 이제 클래스 템플릿을 알아보자, 클래스 템플릿은 메타 프로그래밍에서 본다면 특별한 녀석이니, 꼭 짚고 넘어가야 한다.(여기서 왜 특별한지는 이야기 하지 않는다 : ) ) 클래스 템플릿( class template )라 해도 일반 클래스와 다를게 없다. 클래스 템플릿을 만들기 전에 우선 일반 클래스로 만들어서 테스트를 해 보고, 템플릿 화를 시키는게 더 편하기까지 하니, 정말 차이가 없다는 것을 알 것이다. 클래스 템플릿 정의하기 #include template // or template class class_template { public: ~class_template( ) { } class_template( char a ) : a_ ( a ) { } public..
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 Effective C++ 3판에서 나온 내용으로 말하자면, 이 내용은 스콧마이어스님이 템플릿 메타프로그래밍을 권유하기 위하여, 장단점 설명을 해 주는 장이다. 책에선 구체적으로 나오는것이 아니기 때문에, 별도로 표기 하기 보다는.. 여러 싸이트들을 링크 시키는것이 좋을것이라고 생각 된다. 관련링크 http://ko.wikipedia.org/wiki/템플릿 메타프로그래밍 http://cdecl.tistory.com/6 http://edu.hanyang.ac..
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 개인적으로 곰곰히 생각해 본다면, Effective C++ 은 "어떠한 경우로 인해서 이러한 결론에 도달했다."를 적어 놓은 책같다. 그래서 이해가 되지 않을 때 마다. "왜 이런 결론이 도달했지??" 라고 생각하면서 곱씹어 읽어 보곤 한다. 항목 46의 주제는 여러번 곱씹어 읽었다. 템플릿이란 생소한(나온지 꽤 되었지만.. 주위에서 쓰는 분들을 못봐서..) 프로그래밍 기법과 문법이 있었기 때문이다. 물론 .. 내용에 대해서는 조금 더 알아두어야 할 것들..
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 이번 항목은 "클래스 멤버 함수가 호환되는 모든 타입을 받아 들이기 위해선 템플릿을 사용하면 편하다" 를 주제로 이야기 한다. 템플릿의 특성은 "여러 타입의 변수에 있어 하나의 코드로 대응 시킬 수 있다" 이다. 이것은 "모든 타입"에 대해서 동일한 코드로 대응 시킬수 있다는 뜻인데.. 하필이면 "호환되는 모든 타입" 이다. 호환되는 모든 타입이라.. 무슨 뜻일까? 예제코드 1, 호환성이 이해가 될 것이다. // ikpil.com or ikpil.tist..
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 이번 항목의 주제는 "템플릿의 최대의 적 코드 비대화를 막는 원리" 에 대해서 이다. 이게 무슨 말인지 모르겠다면, 아래 예저 코드를 통하여, 실제로 컴파일 용량을 확인해 보도록 하자. 예제 1 : 코드 비대화를 보여주는 템플릿 아용 사례, MSVC2005 Debug Mode : 88KB // ikpil.com or ikpil.tistory.com #include // 템플릿의 타입 매개변수와 비타입매개변수 template //
최근댓글