IT
HOME > 도서 > IT

Fundamental C++ 프로그래밍 원리

  • 부제 : 기초부터 고급까지
  • 저자 : 김화수
  • 발행일 : 2015-01-20
  • 페이지 : 832쪽
  • ISBN : 978-89-8379-843-5
  • 판형 : 188mm×257mm
  • 정가 : 28,000원
  • 책 소개
  • 저자소개
  • 미리보기
  • 목차
  • 다운로드

이 책은 C++ 프로그래밍의 문법과 사용 방법보다는 C++ 그 자체에 초점을 두었다. , C++ 프로그래밍이 어떤 구조와 원리에 의해서 이루어지는지를 집중적으로 설명하는데 주안점을 두었다. 따라서 일부 내용 중에는 C++ 코드가 어셈블리로 어떻게 변환되고, 어떤 동작 원리에 의해서 돌아가는지를 심층적으로 살펴보는 부분도 있다. 그렇다고 그것이 전부인 것은 아니다. 근본 원리를 이해했으면 그것을 응용할 때 빛을 발휘되게 된다. 이 책에서는 기본 원리가 어떤 식으로 응용되어서 C++ 프로그래밍의 수많은 표준과 기법으로 탄생하는지를 살펴볼 수 있다.

 

이 책에는 기존의 책들이나 검색에서 쉽게 접할 수 없는 내용들이 다수 나오게 된다. 가령 단순히 원칙처럼 외우고 넘어갔던 new ~ delete, new[] ~ delete[]를 반드시 짝 맞추어야 하는 이유라던가, 생성자와 소멸자에서는 왜 가상함수가 제대로 동작하지 않는지를 알 수 있게 된다. 그 외에도 const 멤버 함수에서 왜 const가 반드시 필요할 수 밖에 없는지, 또한 STLfunction은 람다를 어떤 방식을 통해서 전역적으로 저장할 수 있는지도 다루게 된다.

 

C++C 언어에 클래스를 추가하면서 탄생한 언어이다. 따라서 이 책은 클래스와 더불어서 클래스로 인하여 추가된 개념들을 중점적으로 살펴보게 된다. 가령 클래스의 다중 상속 및 가상 상속의 구조를 정확히 파악함으로써 클래스간 타입 변환 및 포인터 변화에 대해서 자세히 알아보게 되며, 가상함수의 구조 및 호출 메커니즘도 자세히 살펴본다. 또한 기존의 책들이 함수 포인터를 단순히 C 언어 기준으로만 기술하였던 것에 비해서 이 책에서는 멤버 함수 포인터를 깊이 있게 다룬다. 멤버 함수 포인터의 구조와 크기가 경우에 따라서 어떻게 달라지는지 확인할 수 있을 것이고, 비가상 멤버 함수와 가상 함수의 포인터가 다른 방식의 메커니즘으로 호출되는 것도 알 수 있게 된다.

 

이 책이 C++을 중점적으로 다루지만 C++의 근본은 바로 C 언어이듯이, C 언어의 기본 개념도 깊이 있게 다룬다. 타입의 정확한 의미와 더불어서 선언과 정의에 대해서 살펴보며, 메모리를 기준으로 포인터와 배열의 구조와 함께 차이점에 대해서도 심도 있게 다룬다.

 

이 책을 통해서 C++ 프로그래밍의 기본을 튼튼히 한다면 고급 프로그래밍을 하는데 많은 도움이 될 것이다. 

김화수(金花秀)

flower_excel@naver.com

서울대학교에서 컴퓨터공학을 전공했다. SMIT에서 2002 부산 아시안게임 국제 송출 CG프로그램을 개발하였고, NAVER에 입사해 P2P 시스템 및 검색광고 시스템을 개발하였으며,

현재는 클라우드 시스템 개발을 담당하고 있다. 일반 서적과 웹에서는 쉽게 접할 수 없는 프로그래밍 정보를 제공하기 위하여 [성남현인의 프로그래밍 원리] 블로그를 운영하고 있다. 


 

Chapter 01 타입 (Type)

1.1. 디지털화

1.2. 정수 타입

1.3. 부동소수점 타입

1.4. 문자 타입

1.5. 문자열

1.6. 날짜 시간

1.7. 참조 타입

1.8. typedef

1.9. auto

1.10. 정리

 

 

Chapter 02 선언과 정의

2.1. 선언과 정의의 구분

2.2. 기억 부류(Storage Class)

2.3. 정적 변수

2.4. 정리

 

 

Chapter 03 빌드(Build)

3.1. 빌드의 구성

3.2. 전처리 지시문

3.3. 미리 정의된 매크로

3.4. 미리 컴파일된 헤더(Pre-Compiled Header)

3.5. 링크 에러(Link Error)

3.6. 정리

 

 

Chapter 04 메모리

4.1. 가상 메모리

4.2. 메모리 할당과 해제

4.3. 메모리와 이름

4.4. 정리

 

 

Chapter 05 포인터와 배열

5.1. 포인터

5.2. 배열

5.3. 다차원 배열

5.4. 배열의 크기

5.5. vector

5.6. 정리

 

Chapter 06 클래스

6.1. 구조체와 클래스의 차이

6.2. 클래스의 메모리 구조

6.3. 생성자와 소멸자

6.4. 복사 생성자와 복사 대입 연산자

6.5. 초기화 리스트(Initialization List)

6.6. 타입 변환 연산자(Type Conversion Operator)

6.7. 상속(Inheritance)

6.8. 다중 상속(Multiple Inheritance)

6.9. 가상상속(Virtual Inheritance)

6.10. 클래스 타입 변환

6.11. 정리

 

 

Chapter 07 함수

7.1. 함수 타입

7.2. 함수 호출 규약(Calling Convention)

7.3. Name Mangling(Name Decoration)

7.4. 인자(Parameter / Argument)

7.5. 반환 타입(Return Type)

7.6. 가변 인자 함수

7.7. 클래스 멤버 함수

7.8. 함수 객체(Functor)

7.9. 람다(Lambda)

7.10. 정리

 

 

Chapter 08 가상 함수

8.1. 가상 함수 기본 동작

8.2. 가상 함수 테이블

8.3. 상속 클래스의 가상 함수

8.4. 가상 함수의 호출 방식

8.5. 생성자와 소멸자

8.6. 순수 가상 함수(Pure Virtual Function)

8.7. 다중 상속과 가상 함수

8.8. 가상 상속과 가상 함수

8.9. 정리

 

 

Chapter 09 함수 포인터

9.1. 전역 함수 포인터

9.2. (비가상) 멤버 함수 포인터

9.3. 가상 상속 클래스 멤버 함수 포인터

9.4. 가상 함수 포인터

9.5. 함수 호출 규약과 함수 포인터

9.6. 전방 선언 함수 포인터

9.7 정리