템플릿
이펙티브 C++(312p ~ 320p)
이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 312p ~ 320p 요약 항목 44: 매개변수에 독립적인 코드는 템플릿으로부터 분리시키자 템플릿을 통해 코딩 시간 절약, 코드 중복 회피를 잡을 수 있다. 클래스 템플릿의 멤버 함수는 이들이 실제로 사용될 때만 암시적으로 인스턴스화 된다. 그러나 아무 생각 없이 템플릿을 사용하면 코드 비대화가 초래될 수 있다. 똑같거나 거의 비슷한 내용의 코드와 데이터가 여러 별로 중복되어 이진 파일로 구워진다는 의미이다. 따라서 이진 코드가 템플릿으로 인해 불어 터지는 현상을 미연에 방지할 방법을 알아둬야 한다. 공통성 및 가변성 분석 두 함수를 분석해서 공통적인 부분과 다른 부분을 찾은 후에 공통 부분은 새로운 ..
이펙티브 C++(306p ~ 312p)
이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 306p ~ 312p 이펙티브 C++(306p ~ 312p) 요약 항목 43: 템플릿으로 만들어진 기본 클래스 안의 이름에 접근하는 방법을 알아 두자 서로 다른 몇 개의 회사에 메시지를 전송할 수 있는 프로그램을 만들어야 한다. 어떤 메시지가 어떤 회사로 전송될지를 컴파일 도중에 결정할 수 있는 충분한 정보가 있다면, 템플릿 기반의 방법을 사용할 수 있다. class CompanyA { public: void sendCleartext(const std::string& msg); void sendEncrypted(const std::string& msg); } class CompanyB { public:..
이펙티브 C++(295p ~ 306p)
이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 295p ~ 306p 이펙티브 C++(295p ~ 306p) 요약 7. 템플릿과 일반화 프로그래밍 C++ 템플릿은 사용자가 타입에 관계없는 컨테이너를 만들어 사용할 때 타입 안전성을 부여할 수 있도록 만들기 위해 도입됐다. 일반화 프로그래밍은 템플릿의 한 응용 분야로 파생되었다. 이를 기반으로 템플릿 메타프로그래밍이라는 새로운 영역이 탄생하였다. 이는 컴파일러 내부에서 실행되고 컴파일 과정이 끝날 때 실행을 멈추는 또 하나의 프로그램을 만드는 것이다. 템플릿의 활용 영역은 팔색조처럼 다양하지만, 어떤 영역을 막론하고 템플릿 기반 프로그래밍이란 것의 밑바닥에는 핵심 아이디어가 존재한다. 항목 41: 템플..