2015. 7. 27. 02:00ㆍ프로그래밍/Effective C++
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) : 템플릿의 강력함에서 파생된 새로운 프로그래밍 패러다임
정리
- 효과적인 프로그래밍 개발을 위해 한 하위 언어에서 다른 하위 언어로 옮겨가면서
대응 전략을 바꾸어야 하는 상황이 오더라도 당황하지 말아야 한다.
- C++을 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다.
- 그 경우란 바로 C++의 어떤 부분을 사용하느냐이다.
'프로그래밍 > Effective C++' 카테고리의 다른 글
컴파일러의 디폴트 제공 함수들(effective c++ 05) (0) | 2015.07.27 |
---|---|
const 들이대기(effective c++ 03) (0) | 2015.07.27 |
#define 안녕(effective c++ 02) (0) | 2015.07.27 |
객체 복사(effective c++ 12) (0) | 2015.07.26 |
(작성중)배열 vs 다형성(more effective c++ 03) (0) | 2015.07.25 |
C++ 캐스팅(more effective c++ 02) (0) | 2015.07.25 |
객체 초기화(effective c++ 04) (0) | 2015.07.24 |