template

호환되는 모든 타입을 받아들이는 멤버 함수를 만들려면 멤버 함수 템플릿을 사용해라. 일반화된 복사 생성 연산과 일반화된 대입 연산을 위해 멤버 템플릿을 선언했다 하더라도, 보통의 복사 생성자와 복사 대입 연산자는 직접 선언해야 한다. 호환되는 모든 타입을 받아들이는 데는 멤버 함수를 사용 스마트 포인터는 그냥 포인터처럼 동작하면서도 포인터가 주지 못하는 기능을 갖고 있다. 예를 들면 힙 기반 자원의 삭제를 지원하는 auto_ptr이나 tr1::shared_ptr 객체가 있다. STL 컨테이너의 반복자도 스마트 포인터와 같다. 포인터에도 스마트 포인터로 대신할 수 없는 특징이 있다. 그중 하나가 암시적 변환을 지원하는 점이다. 파생 클래스 포인터는 암시적으로 기본 클래스 포인터로 변환되고, 비상수 객체에 ..
템플릿을 사용하면 비슷비슷한 클래스와 함수가 여러 개 만들어진다. 따라서 템플릿 매개변수에 종속되지 않은 템플릿 코드는 비대화의 원인이 된다. 비타입 템플릿 매개변수로 생기는 코드 비대화의 경우, 템플릿 매개변수를 함수 매개변수 혹은 클래스 데이터 멤버로 대체함으로써 비대화를 없앨 수 있다. 타입 매개변수로 생기는 코드 비대화의 경우, 동일한 이진 표현구조를 가지고 인스턴스화되는 타입들이 한 가지 함수 구현을 공유하게 만듦으로써 비대화를 감소시킬 수 있다. 매개변수에 독립적인 코드는 템플릿에서 분리 템플릿은 코딩 시간 절약, 코드 중복 회피에 효과가 있다. 하지만, 아무 생각 없이 템플릿을 사용하면 똑같은 내용의 코드와 데이터가 여러 개 중복되어 이진 파일로 만들어지는 코드 비대화가 생길 수 있다. 코드..
hvv_an
'template' 태그의 글 목록