오늘날의 C++은 다중 패러다임 프로그래밍 언어(multiparadigm programming language)라고 불린다.
절차적 프로그래밍을 기본으로 객체지향, 함수식, 일반화, 메타 프로그래밍 개념까지 지원한다.
이러한 C++을 이해하는 가장 쉽고 정확한 방법은 C++을 단일 언어가 아닌 여러 언어들의 연합체 로 보는 것이다.
C++은 네 가지의 하위 언어를 제공하고 있다.
#define
, #include
, ...), 기본 제공 데이터타입, 배열, 포인터 등C++은 한 가지 프로그래밍 규칙 아래 뭉친 통합 언어가 아니라 네가지 하위 언어들의 연합체이다.
각각의 하위 언어가 자신만의 규칙을 가진다.
따라서 C++에서의 효과적인 프로그래밍 규칙은 C++의 어느 부분을 사용하느냐에 따라 달라진다.
ex. C의 기본 제공 데이터 타입이나 STL의 반복자 및 함수 객체의 경우 값 전달이 효율적이지만, 객체 지향 C++에서는 참조 전달이 효율적