2016년 3월 16일 수요일

[Effective C++] 항목 1: C++을 언어들의 연합체로 바라보는 안목은 필수

C++ 은 다중 패러다임 언어다.
  • 절차적 프로그래밍
  • 객체 지향 프로그래밍
  • 함수형 프로그래밍
  • 일반적 프로그래밍
  • 메타프로그래밍
C++ 는 4개의 하위 언어로 구성되어 있다.
  • C 언어: C++ 의 근간은 C 언어다. 블록, 문장, 선행 처리자, 기본 제공 데이터 타입, 배열, 포인터 등. 이들 중 상당수는 구식의 것이며 C++ 의 것으로 대체할 수 있는 방법을 활용하는 것이 좋다. 그러나 C++ 개발자라면 이들 개념에 대해 정확히 알고 있어야 할 것이다.
  • 객체 지향 C++: 클래스(생성자와 소멸자), 캡슐화, 상속, 다형성, 가상 함수(동적 바인딩) 등.
  • 템플릿 C++: 일반화 프로그래밍 영역. 템플릿의 힘은 너무나도 강력해서 새로운 프로그래밍 패러다임이 생기기도 하였다(템플릿 메타프로그래밍).
  • STL: 표준 템플릿 라이브러리(Standard Template Library). 컨테이너, 반복자, 알고리즘, 함수 객체가 얽혀있다. STL은 나름대로 정형화된 사용 규칙이 있기 때문에 그 규칙을 따라 사용한다.
C++에서는 이들 개념을 자유자재로 사용하는 것이 중요하다.
기본 제공 타입에 대해서는 참조 전달 보다는 값 전달을 하는 것이 더 좋다.
사용자 정의 타입에 대해서는(생성자와 소멸자의 개념 때문에) 상수 객체 참조자에 의한 전달(pass-by-reference-to-const)이 더 좋다.
그러나 STL의 반복자와 함수 객체에 대해서는(C 언어의 포인터를 본떠 만든 것이기 때문에) 값 전달을 쓰는 것이 더 좋다(매개 변수 전달 방법을 결정하는 사항은 항목 20에서 살펴봄).
C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란, 바로 C++의 어떤 부분을 사용하느냐다.

댓글 없음:

댓글 쓰기

[Effective C++] 항목 30 : 인라인 함수는 미주알고주알 따져서 이해해 두자.

인라인 함수를 사용하면 컴파일러가 함수 본문에 대해 문맥별 최적화를 걸기가 용이해집니다. 인라인 함수의 아이디어는  함수 호출문을 그 함수의 본문으로 바꿔치기하자는 것  남발했다가는 코드의 크기가 커질 게 뻔하다. 인라인 함수로 부풀려진 ...