음.. 우리나라 말로 번역하면, "템플릿 친구 만들기"로 표현되는데, 무슨 말인고 하면, "클래스에 friend 선언시 클래스 템플릿 또는 함수 템플릿를 firned 하기" 를 말한다. 예로 쓸 함수는, boost의 checked_delete 함수 템플릿을 사용해 보기로 한다. 이 함수의 헤더 파일은 boost/checked_delete.hpp 이다. 전문은 아래 소개 한다. #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED #define BOOST_CHECKED_DELETE_HPP_INCLUDED // MS compatible compilers support #pragma once #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma o..
책 정리 검색 결과
이번 항목은 나에게 큰 충격을 주었다. "이렇게 되는 구나." 싶었기 대문이다. 특수화를 하지 말아야 하는 이유가 절대적인것은 아니지만, 조심해야 하는 이유로써는 충분하다. 소크라테스의 교육법대로, 질문을 통해서 진행한다. 1. C++에 존재하는 템플릿의 두 가지 종류는 무엇이며, 각각 어떻게 특수화하는가? 알다시피 템플릿의 두 가지 종류는 "클래스 템플릿" 과 "함수 템플릿" 두 가지가 있다. 이 두가는 링크를 통해서 정리한다. IT 전뇌실/C++ Template 첫번째 질문은 이 링크로 대체 할 수 있다. 이제 본론으로 넘어가서 두번째 질문을 던져보자. 2. 다음 코드의 마지막 줄에서 호출되는 것은 어떤 f일까? 그리고 왜 그것이 호출 될까? template void f( T ); template v..
일반성을 갖춘 코드를 짤 때, 주의 해야 할 것이 무엇인지 말하고자 하는 항목이다. 사실 나는 성능에 큰 영향을 미치지 않는다면,일반성을 갖추는게 더 효과적이라고 생각을 한다. 여러가지 이유가 있지만, 가장 큰 이유는 아마도, "다른 사람이 내 코드를 보았을 때, 무리가 없는게 제일 좋기 때문" 을 들 수가 있을 것이다. 허브 셔터는 이번 장에서, 이런 일반성을 갖추고자 할 때, 주의해야 하는것을 이 끌어 내기 위해서 다음과 같은 질문을 던졌다. 1. 다음 함수들에는 미묘한 일반성 함정이 존재한다. 그것이 무엇이며 가장 좋은 해결 방법은 무엇이가? template void destory( T* p ) { p->~T(); } template void destory( Fwditer first, Fwditer..
이번 항목은 제네릭 프로그래밍에 있어, 템플릿의 사용은 이렇게 해 주어야 한다 는 것을 말하는 항목이다.바로 질문 넘어가서, 파악해 보도록 하자. 질문 1. "C++ 템플릿은 컴파일 시점 다형성을 제공한다"라는 문장을 설명하라. .. 런타임 다형성을 안다면, 컴파일 다형성을 이해하기 쉬울 것이다. 런타임 다형성은 상속과 "virtual" 을 이용해, 런타임 중 객체가 상속 상태에 따라 다양하게 .. 말이 어렵잖아. 코드로 봐 보자. #include class Base { public: virtual void Draw() const { std::cout
이번 항목은 표준 라이브러리를 비판하기 위해서 있는 항목 같기도 하다. 비판의 방향은 "표준이 표준이 아닐 수 있는 것은 표준 라이브러리의 구현을 엄격히 정해 두지 않아서 이다" 로 잡고 이야기 하겠다. 이 이야기의 대표로 함수 std::mem_fun 를 들어 본다. 1. std::mem_fun은 무엇인가? 어떨 때 사용 하는가? 사례를 제시하라. 쉽게 말해서 멤버 함수를 함수 객체로 만들어 주는 binder 이고, ... 알고리즘에 쓸 때 많이 쓰인다. .. 링크로 대체 한다. http://groups.google.com/group/han.comp.lang.c++/msg/f74a487c6b6cdf64 http://yesarang.tistory.com/101 2. 다음 코드의 주석으로 생략된 부분에 올바..
항목 2에서 "메모리를 직접 제어하여, 사용할 때는, 범위 안전성을 제공하는 함수만을 사용해야 한다"는 교훈을 얻을 수 있었다. 이번 항목에서는 문자열 포매팅에 있어서, 그 대안들을 논쟁해 본다. 질문 1. 다음의 sprintf 대안들의 장단점을, 이전의 항목 2에서 나왔던 분석과 예제코드를 이용해서 비교, 대조하라. ⓐ snprintf sprintf 와 가장 근접한것이 snprintf 일 것이다. snprintf 는 출력 버퍼의 크기를 지정함으로써, 범위를 지정해 안전성을 확보한 함수인 것이다. sprintf 의 단점을 너무나 잘 알았던 컴파일러 제공사들은 비표준으로 이런 함수를 제공하고 있었다. 그러다 C99에서부터 공식적으로 표준 함수가 되었다. 가장 위험한것은 고쳤지만, 형식에 대한 안전성을 고치..
최근댓글