프로그래밍 언어/Effective C++

[Effective C++]항목 53~55: 기타

우향우@ 2023. 6. 17. 00:23

항목 53 : 컴파일러 경고를 지나치지 말자

프로그래밍을 하다보면 컴파일은 정상적으로 되지만 컴파일러 경고가 나오는 경우가 있다. 이때 이러한 경고는 무시하지말고 무엇을 말하고 있는지를 살펴보아야한다. 대부분의 컴파일러 경고는 문법상 문제는 없지만 코드의 맥락이 직관적인 부분과 다르게 동작할 때 발생한다. 예를 들어 부모에서 f라는 가상 함수를 const로 선언하고 자식이 비 const f함수를 작성하였다면 일부 컴파일러에서 자식의 f가 부모의 f를 가린다고 경고를 띄운다. 실제로 자식의 f가 부모의 f를 가리기에 자식 인스턴스는 부모 포인터와 자신의 포인터에 담겨있을때 서로 다른 f를 호출한다.  객체지향의 기본 동작에서 벗어난 것이다. 이런식으로 겉으로 드러나는 직관적인 부분과 실제 동작이 다른 부분을 경고해주므로 경고가 발생하면 해당 부분의 동작이 정말 내가 의도한 것이 맞는지 한번 확인해볼 필요가 있다

 

항목 54 : TR1

TR1은 과거 C++0x(현재 C++11의 과거 예명)이 제작중일때 나온 C++ 라이브러리 작업 그룹이 작성한 1차 기술 보고서이다. 즉 당시 다음 버전이었던 C++0x에 추가될 예정인 표준 라이브러리 기능에 대한 명세이다. 이러한 명세는 당시 Boost에서 검증된 몇 라이브러리들을 그대로 혹은 수정하여 가져와서 작성되었다. c++20까지 나온 현재시점에서는 당연히 표준 라이브러리로 다 들어가있는 기능이다.

TR1에는 스마트 포인터, 일반화 함수 객체, 해쉬 컨테이너등 현재는 표준 라이브러리에 속한 여러가지 기능이 포함되있다.

 

항목 55 : Boost

Boost는 c++의 가장 영향력있는 c++ 라이브러리 제작 단체이자, 사이트이자, 거기서 제작된 라이브러리 집합을 일컷는다.

Boost는 실제 c++표준 위원회에 속해 있던 회원들 몇명이 세웠기도 하고 관리 인원도 표준 위원회와 밀접하게 연관있는 인물들이기에 c++ 표준 위원회와도 밀접한 협력을 하는 관계에 있다. Boost의 활동 목표 중 하나가 c++ 표준에 추가될만한 기능들을 먼저 테스트해보는 역할도 있고 실제로 그러한 역할을 수행하고 있다.

Boost는 여러 단계에 걸친 엄격한 심사를 통해서만 라이브러리를 선발하기에 신뢰도가 상당히 높고 표준 위원회와도 밀접한 협력관계이기에 단순 라이브러리 단체와 차별을 가지는 강력한 영향력을 가졌다.

Boost에는 범용적인 프로그래밍을 위한 라이브러리부터 수학, 메모리등의 일부 분야에서 사용하는 라이브러리들도 많이 존재한다. 이러한 라이브러리들이 모두 무료 오픈소스로 제공되기에 굉장히 유용한 쓰기좋은 라이브러리 집합이다.

 

 

 

참고서적

Effective C++