C++는 다중패러다임 프로그래밍 언어(Multiparadigm programming language)라고 불린다.
절차적(procedural) 프로그래밍을 기본으로 객체 지향(object-oriented), 함수식(functional), 일반화(generic) 프로그래밍을 포함하여 메타프로그래밍(metaprogramming) 개념까지 지원한다.
C
C++은 C를 기본으로 하고 있다. 블록, 문장, 선행 처리자, 기본제공 데이터타입(int ,float 등), 배열, 포인터 등 C에서 이어져 왔다. C기능만 사용해도 되나 템플릿도 없고 예외, 오버로딩도 없어 적용할 수 있는 범위가 좁아짐(C++의 장점)
객제 지향 개념의 C++
클래스를 사용하는 C에 관한 것이 해당된다. 생성자와 소멸자, 캡슐화, 상속, 다형성, 가상 함수등이 있다.
템플릿 C++
일반화 프로그래밍 부눙이고 템플릿 메타프로그래밍(template metaprogramming : TMP)이라고 한다.
STL
템플릿 라이브러리(template library)이다. 컨테이너(container), 반복자(iterator), 알고리즘(algorithm)과 함수 객체(function object)가 얽혀 돌아가는 규약으로 삼고 있으나 얼마든지 다른 아이디어 중심으로 만들어질 수 있다.(커스텀 가능?)
효과적인 프로그래밍 개발을 위해 한 하위 언어에서 다른 하위 언어로 옮겨 가면서 대응 전략을 바꿔야 하는 상황이 온다. 예를 들어 C 스타일로만 쓰고 있으면 기본제공 타입에 대해서는 값 전달(pass-by-value)이 참조 전달(pass-by-reference)보다 대개 효율이 더 좋다 라는 규칙이 통하지만, 객체 지향 C++에서는 사용자 정의 생성자/소멸자 개념이 생기면서 상수 객체 참조자에 의한 전달(pass-by-reference-to-const)방식이 더 좋은 효율을 보인다. 특히 템플릿에서 두드러진다.(객체의 타입 조차 알 수 없기 때문에)
하지만 STL의 반복자 및 함수 객체에 대한 값 전달에 대한 규칙이 힘을 발휘한다(20장 참고).
이것만은 잊지 말자
C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란, C++의 어떤 부분을 사용하느냐이다.
'서적 정리 > Effective C++' 카테고리의 다른 글
8.예외가 소멸자를 떠나지 못하도록 붙들어 놓자 (0) | 2021.12.10 |
---|---|
7.다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2021.12.10 |
6.컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 (0) | 2021.12.10 |
5.C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 (0) | 2021.12.10 |
4.객체를 사용하기 전에 반드시 그 객체를 초기화하자 (0) | 2021.12.10 |
3.낌새만 보이면 const를 들이대 보자! (0) | 2021.12.10 |
2.#define을 쓰려거든 const, enum, inline을 떠올리자 (0) | 2021.12.10 |
차례 (0) | 2021.12.10 |
댓글