1. 1 C++소개
"C++이 무엇인가요?" 라는 질문에 대한 답변은 다양하게 나올 수 있을 것입니다. 저는 C++ 강의를 시작하면서 이에 대한 답변으로 "C++ is a c with class."라고 얘기를 합니다. 이렇게 얘기를 하는 이유는 C++ 언어가 C와 무관한 언어가 아니라 C언어의 문법에 새로운 문법 사항으로 클래스가 추가되었음을 강조하기 위함입니다. 이 책도 C언어 기본 문법을 이해하고 있는 독자를 대상으로 작성하였습니다.
그렇지만 C++ 언어는 클래스를 제외하고도 C언어와 차이가 있는 문법 사항이 많이 있습니다. 여기서는 이러한 사항들에 대해서 먼저 다루려고 합니다. 그리고 이후에는 될 수 있으면 추가된 클래스 문법과 개체 지향에 초점을 두어 기술하고자 합니다. 참고로 이 책에서는 템플릿에 대해서는 다루지만 표준 템플릿 라이브러리에 대해서는 다루지 않습니다.
먼저, C++ 언어가 C와 다른 철학적인 부분을 얘기하자면 C언어는 언어에서 제한하는 문법 사항은 간략하게 만들어 유연성 있게 프로그래밍을 할 수 있게 하고 있습니다. 이러한 특징으로 개발자는 유연성 있게 프로그래밍을 할 수 있지만, 자신의 프로그램 신뢰성에 관한 책임도 개발자가 부담해야 합니다. 반면, C++ 언어에서는 신뢰성에 관한 많은 문법적인 제약을 두어 개발자로 하여금 제약 범위 내에 신뢰성 없는 부분에 대해 오류를 발생하여 수정할 수 있게 도움을 주고 있습니다. 물론, C++ 언어가 높은 신뢰성을 추구한다는 것은 C언어와 비교했을 때의 얘기이고 Java나 C#과 비교하면 신뢰성이 상대적으로 떨어진다고 할 수 있습니다. 이 책에서는 C에서 제공하지 못했던 이와 같은 특징들을 중심으로 기술이 되어 있습니다.
C++ 언어는 개체 중심으로 프로그래밍할 수 있는 주요한 특징들을 갖고 있습니다. 개체를 지향하는 프로그래밍 언어(Object Oriented Programming Language)들이 갖는 공통적인 주요한 특징으로는 캡슐화, 상속, 다형성을 들 수 있습니다. 캡슐화는 프로그램에 개체들을 정의하는 과정을 말하며 상속은 기반 형식에서 파생 형식을 정의하였을 때 기반 형식의 멤버를 상속받는 특성을 말합니다. 다형성은 변수를 통해 접근하는 개체의 실제 형식과 멤버 메서드를 통해 수행되는 동작이 다양한 형태를 지닐 수 있음을 말합니다. 이 책은 많은 부분에서 이러한 OOP의 특징에 대한 문법사항과 이들을 효과적으로 사용하는 방법들에 대해서 다루고 있습니다. 또한, 프로그램을 개발공정에 따라 구현에 치중하지 않고 설계에 대한 부분도 충실히 다루고 있습니다.
관련 게시글
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항 (열거형)
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항 (const 포인터, void 포인터)
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항(bool 형식의 제공)
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항(태그명, 변수 선언 위치)
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항 (레퍼런스 변수)
[C++] 함수 중복 정의(function overloading)
동영상 강의
'언어 자료구조 알고리즘 > Escort C++' 카테고리의 다른 글
[C++] 2. 1 캡슐화란? (2) | 2016.04.15 |
---|---|
[C++] namespace (0) | 2016.04.15 |
[C++] 매개 변수명이 없는 입력 매개 변수 (0) | 2016.04.15 |
[C++] 디폴트 매개 변수 (0) | 2016.04.15 |
[C++] 함수 중복 정의(function overloading) (0) | 2016.04.15 |
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항 (레퍼런스 변수) (0) | 2016.04.15 |
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항(태그명, 변수 선언 위치) (0) | 2016.04.15 |
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항(bool 형식의 제공) (0) | 2016.04.15 |
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항 (const 포인터, void 포인터) (0) | 2016.04.15 |
[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항 (열거형) (2) | 2016.04.15 |