class B { public: virtual void f() const; }; class D : public B { public: virtual void f(); };
위 Code는 warning: D:f() hides virtual B::f() 라는 경고를 유발한다. 당연하다는 듯이 넘어가는 사람들이 많은데, 지금 재선언 된것이 아니라 가려졌다는 사실을 목 놓아 외치는 중이란걸 명심해야 한다.
* 컴파일러 경고를 쉽게 지나치지 맙시다. 여러분의 컴파일러에서 지원하는 최고 경고 수준에도 경고 메세지를 내지 않고 컴파일되는 코드를 만드는 쪽에 전력을 다 하십시오.
* 컴파일러 경고에 너무 기대는 인생을 지양하십시오. 컴파일러마다 트집을 잡고 경고를 내는 부분들이 천차만별이기 때문입니다. 지금 코드를 다른 컴파일러로 이식하면서 여러분이 익숙해져 있는 경고 메세지가 온 데 간 데 없이 사라질 수도 있습니다.
TR1을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자.
TR1의 라이브러리를 이루는 알맹이들은 총 14개 이다.
- 스마트 포인터(smart pointer) : tr1::shared_ptr, tr1::weak_ptr 등...
- tr1::function : 함수호출성 개체(callable entity)의 표현을 가능하게 해 주는 템플릿이다. 원래는 완벽히 똑같은 시그너처끼리의 호환만 가능하지만 tr1::function을 사용하면 매개변수 및 return type에 대해서도 변환이 가능한 다른 타입의 시그너처와도 호환이 가능하게 된다.
- tr1::bind
- 해시 테이블(hash table) : tr1::unordered_set, tr1::unordered_multiset, tr1::unordered_map, tr1::unordered_multimap
- 정규 표현식(regular expression)
- tr1::tuple : pair 템플릿이 신세대 버전. 2개 뿐 아니라 몇 개라도 담을 수 있다.
- tr1::array : begin, end 등 멤버 함수를 지원하는 배열. 동적 메모리를 쓰지는 않음
- tr1::mem_fn : 멤버 함수 포인터를 적용시키는(adapt) 용도에 쓸 수 있는, 문법적으로 천하통일을 이룬 템플릿.
- tr1::reference_wrapper : 기존의 참조자가 객체처럼 행세할 수 있도록 만들어 주는 템플릿.
- 난수 발생 : rand보다 몇 배는 우수한 난수 발생 기능
- 특수 용도의 수학 함수 : 라게르(Laquerre) 다항식, 베셀(Bessel) 함수, 완전 타원 적분(complete elloptic integral) 등...
- C99 호환성 확장 기능
- 타입 특성정보(type trait)
- tr1::result_of : 어떤 함수 호출의 반환 타입을 추론해 주는 템플릿
* 최초에 상정된 표준 C++ 라이브러리의 주요 구성요소는 STL, iostream, 로케일 등입니다. 여기에는 C89의 표준 라이브러리도 포함되어 있습니다.
* TR1이 도입되면서 추가된 것은 스마트 포인터(tr1::shared_ptr), 일반화 함수 포인터(tr1::function), 해시 기반 컨테이너, 정규 표현식 그리고 그 외의 1개 구성요소입니다.
* TR1 자체는 단순히 명세서일 뿐입니다. TR1의 기능을 사용하기 위해서는 명세를 구현한 코드를 구해야 합니다 TR1 구현을 구할 수 잇는 자료처 중 한 군덱 바로 부스트입니다.
부스트는 늘 여러분 가까이에
아직 Morden C++을 사용하지 못하고 구버전의 C++ 컴파일러를 사용할 경우 많은 부분, Morden C++의 많은 부분이 부스트에 있는 경우가 많다. C++ 표준화위원들과 부스트는 밀접한 관계가 있다.
http://boost.org
부스트 라이브러리 군단은 크게 십수개의 범주로 나뉘어 있다.
- 문자열 및 텍스트 처리
- 컨테이너
- 함수 객체 및 고차(higher-order) 프로그래밍 : 람다(Lambda) 라이브러리 등...
- 일반화 프로그래밍 : 텍사스 소때처럼 득실득실한 특성정보(traits) 클래스...
- 템플릿 메타프로그래밍(TMP) : 컴파일 타임 단정문, 부스트 MPL 라이브러리 등...
- 수학 및 수치 조작 : 유리수, 4원수(quaternion) 및 8원수(octonion), 최대 공약수 및 최소공배수, 난수 등
- 정확성 유지 및 테스트
- 자료구조
- 타 언어와의 연동 지원 : C++ 과 Python 사이의 걸림돌 없는 상호운영을 가능하게 해줌
- 메모리 : Pool 라이브러리 등
- 기타 : CRC 점검, 날짜 및 시간 조작, 파일 시스템 횡단 등을 지원하는 라이브러리 등
* 부스트는 동료 심사를 거쳐 등록되고 무료로 배포되는 오픈 소스 C++ 라이브러리를 개발하는 모임이자 웹사이트입니다. 또한 C++ 표준화에 있어서 영향력을 있는 역할을 맡고 있습니다.
* 부스트에서 배포되는 라이브러리들 중엔 TR1 구성요소에 들어간 것도 잇지만, 그 외에 다른 라이브러리들도 아주 많습니다.
댓글 없음:
댓글 쓰기