어떤 기능,역활, 상태를 클래스에 부여하기 위해서, 상속이나 특성 클래스를 사용 한다. 이러한 클래스들에 제약을 두어서, 원하는 클래스만이 사용될 수 있게 하는 기술에 대한 이야기가 바로 항목 4이다. 이야기를 하기 위해서 5가지의 질문에 답해보고 생각해 보기 바란다고, 책에선 설명하고 있다. 1. 특성 클래스(traits class)의 정의는? C++98 17.1.18에서, 클래스 템플릿과 함수 템플릿이 받아들이는 타입을 조작하기 위해, 필요한 타입과 함수의 집합을 포함하는 클래스라고 규정했다. 예를 들면, iterator_traits 도 있고, not1에 넣을때 .. 몇몇 특성 클래스도 있고. 잘 사용하지 않아서 예는 잘 못들겠네; 2. 아래 클래스 템플릿이 있다. 템플릿 매개변수가 T* Clone(..
책 정리 검색 결과
8장부터는 컴파일과 실행 및 오류 검사에 대한 이야기를 하고 있다. 이번 8.1 에선 컴파일에 대한 이야기를 하고 있는데, 루아는 인터프리터 언어로써, 실행 중에 코드를 컴파일 할 수 있는 기능을 제공해 주고 있다고 한다. 파일을 컴 파일 할 때는 두개의 명령어가 있는데, 하나는 dofile, 다른 하나는 loadfile 이다. dofile과 달리 loadfile은 오류를 일으켜도 정지하지 않고, 오류 코드를 반환해 준다. 파일을 컴파일 하는 두 컴파일 함수는 무엇이 다를까? dofile의 경우, 호출 한 번에 파일 내부의 모든 실행을 한번 실행해 준다. 간단한 작업을 한번만 처리 하고자 할 때는 dofile이 유용하다고 한다. loadfile의 경우, 호출 한번에 파일 내부의 모든 실행을 .. 하지 않..
음.. 진짜 반복자라는 말이나. 클로저라는 말이나. 어찌 보면 다 함수들인데 이런 말들이 섞이면서 매우 햇갈리게 된다. 그 이유는 루아가 버전을 올리면서, 생겨난 일이지 아닐까 싶다. 일반 for문의 원리는 아직 변하지 않으므로, 이번 장은 패스 한다. 이번 항목의 마지막 결론을 인용하자면, 루아의 Old 버전에서 사용 한 방법이고, 대부분의 경우 이 방법은 쓰이지 않을 것이라고 한다. 관련 링크 : http://www.lua.org/pil/7.5.html 총평 생각 없이 책 보기 시작한지 어느덧..
이번 항목은 일반적인 반복자 형태가 아닌, 좀 복잡한 형태로 반복을 해야 할 경우에, 클로저를 사용하는게 더 좋다는 이야기를 하고 있다. 클로저란? C++ 과 비교하자면, 함수 오브젝트를 들수 있겠다. 다른 방법으론 table을 이용한 복잡한 반복자를 구현 할 수 있겠으나, 책에선 성능상의 이유로 클로저가 더 좋다고 이야기 한다. 클로저는 테이블 생성하는것보다 부하가 적으며, 테이블 필드 접근보다 더 빠르기 때문이라고 한다. 관련 링크 : http://www.lua.org/pil/7.4.html 총평 !? 요즘 들어 생각을 안하고 책을 보는거 같다..
아무리 찾아도 해설을 못찾았다. .. 암담한 현실앞에 놓여 있다. .. 다 풀어 봐야 하는데, 누구와 비교하면서 공부 해야 하는가...? 난 천재가 아니란 말이다.. 내가 해본 풀이, 추상적 태클과 상상속 태클까지 모두 환영 .. 잘못 된게 있으면 지적해 주세요 2-0. T가 참조 형식이면 T를 그렇지 않으면 const T&를 돌려주는 단항 메타함수 add_const_ref를 작성하라, 그리고 실험할 수 있는 프로그램도 작성하라 (boost::is_same 을 사용 할 수 있다) #include #include // 전방 선언 template class add_const_ref_impl; // 사용되는 메타 함수 : add_const_ref template class add_const_ref { publ..
특수화(specializtion) : C++ Template 특수화를 뜻하며, 이 특수화는 메타프로그래밍의 분기(if 문 같은 거)로 많이 쓰인다. 기본 템플릿(primary template) : 일반 C++ Template 을 뜻한다. 인스턴스화(instantiation) : 진짜로 깨어난 코드를 말한다. 컴파일러는 깨어난 코드만 문법 검사 등을 처리 한다. 평소의 템플릿 코드는 잠자는 코드이지만, 그 잠자는 코드를 그냥 사용 했을 때, 컴파일러는 템플릿 코드를 깨워주고, 문법 검사도 해준다. 즉, 인스턴스화는 "깨어난 코드" 로 봐도 무방하다. 블로브(blob) : 클래스가 멤버함수나 멤버 값들을 가지고 있을 때, 블로브 라고 한다. 메타 자료(metadata) : C++ Template 에서 매개변..
최근댓글