C++은 연합체로 바라보자(effective c++ 01)

2015. 7. 27. 02:00프로그래밍/Effective C++

728x90
728x90

C++

초기

C언어에 객체 지향 기능 몇 가지가 결합된 형태

C with Classes 라는 명칭으로 시작


발전

아이디어, 기능, 프로그래밍 전략들을 취해 자기 것으로 만듦

예외 : 함수 구성 방식의 헤게모니(주도권)을 크게 바꿈

템플릿 : 프로그램 설계에 대한 새로운 사고방식을 선사

STL : ‘확장성’에 대한 지평을 열었다.


특징

다중 패러다임 프로그래밍 언어(Multi Paradigm Programming Language)라 불린다.

절차적 프로그래밍(Procedural Programming)을 기본으로 하되,

객체 지향(Object-Oriented), 함수식(functional), 일반화(Generic) 프로그래밍을 포함하며,

메타 프로그래밍(Metaprogramming) 개념까지 지원한다.


C++의 하위언어

C

- 블록, 문장, 선행처리자, 기본제공 데이터타입, 배열, 포인터 등이 C에서 왔다.

- C에 없는 것 : 템플릿, 예외, 오버로딩 등…


객체 지향 개념의 C++

- 클래스를 쓰는 C에 관한 것이 모두 해당

- 클래스(생성자 및 소멸자 개념), 객체 지향 프로그래밍의 특성(캡슐화, 상속, 다형성), 가상 함수(동적 바인딩) 등


템플릿 C++

- C++의 일반화 프로그래밍 부분

- 대부분의 프로그래밍 규칙에서 저마다의 용도에 맞는 템플릿 구문 하나쯤은 발견할 수 있다

* 템플릿 메타 프로그래밍(TMP, Template Metaprogramming) : 템플릿의 강력함에서 파생된 새로운 프로그래밍 패러다임


STL
- 표준 템플릿 라이브러리(STL, Standard Template Library)
- 컨테이너(Container), 반복자(iterator), 알고리즘(algorithm)과 
함수 객체(function object)가 엮여 돌아가는 것을 규약으로 삼는다.
- 템플릿과 라이브러리는 얼마든지 다른 아이디어를 중심으로 만들어질 수 있다.
- STL은 나름대로 독특한 사용규약이 있어서 STL을 써서 프로그래밍하려면 그 규약을 따르면 된다.


정리

- 효과적인 프로그래밍 개발을 위해 한 하위 언어에서 다른 하위 언어로 옮겨가면서 

대응 전략을 바꾸어야 하는 상황이 오더라도 당황하지 말아야 한다.

- C++을 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다.

- 그 경우란 바로 C++의 어떤 부분을 사용하느냐이다.




728x90
반응형