도서 소개
C++ 프로그래밍의 문법과 사용 방법보다는 C++ 그 자체에 초점을 두었다. 즉, C++ 프로그래밍이 어떤 구조와 원리에 의해서 이루어지는지를 집중적으로 설명하는데 주안점을 두었다. 따라서 일부 내용 중에는 C++ 코드가 어셈블리로 어떻게 변환되고, 어떤 동작 원리에 의해서 돌아가는지를 심층적으로 살펴보는 부분도 있다. 그렇다고 그것이 전부인 것은 아니다. 근본 원리를 이해했으면 그것을 응용할 때 빛을 발휘되게 된다. 이 책에서는 기본 원리가 어떤 식으로 응용되어서 C++ 프로그래밍의 수많은 표준과 기법으로 탄생하는지를 살펴볼 수 있다.
출판사 리뷰
이 책은 C++ 프로그래밍의 문법과 사용 방법보다는 C++ 그 자체에 초점을 두었다. 즉, C++ 프로그래밍이 어떤 구조와 원리에 의해서 이루어지는지를 집중적으로 설명하는데 주안점을 두었다. 따라서 일부 내용 중에는 C++ 코드가 어셈블리로 어떻게 변환되고, 어떤 동작 원리에 의해서 돌아가는지를 심층적으로 살펴보는 부분도 있다. 그렇다고 그것이 전부인 것은 아니다. 근본 원리를 이해했으면 그것을 응용할 때 빛을 발휘되게 된다. 이 책에서는 기본 원리가 어떤 식으로 응용되어서 C++ 프로그래밍의 수많은 표준과 기법으로 탄생하는지를 살펴볼 수 있다.
이 책에는 기존의 책들이나 검색에서 쉽게 접할 수 없는 내용들이 다수 나오게 된다. 가령 단순히 원칙처럼 외우고 넘어갔던 new ~ delete, new[] ~ delete[]를 반드시 짝 맞추어야 하는 이유라던가, 생성자와 소멸자에서는 왜 가상함수가 제대로 동작하지 않는지를 알 수 있게 된다. 그 외에도 const 멤버 함수에서 왜 const가 반드시 필요할 수 밖에 없는지, 또한 STL의 function은 람다를 어떤 방식을 통해서 전역적으로 저장할 수 있는지도 다루게 된다.
C++은 C 언어에 클래스를 추가하면서 탄생한 언어이다. 따라서 이 책은 클래스와 더불어서 클래스로 인하여 추가된 개념들을 중점적으로 살펴보게 된다. 가령 클래스의 다중 상속 및 가상 상속의 구조를 정확히 파악함으로써 클래스간 타입 변환 및 포인터 변화에 대해서 자세히 알아보게 되며, 가상함수의 구조 및 호출 메커니즘도 자세히 살펴본다. 또한 기존의 책들이 함수 포인터를 단순히 C 언어 기준으로만 기술하였던 것에 비해서 이 책에서는 멤버 함수 포인터를 깊이 있게 다룬다. 멤버 함수 포인터의 구조와 크기가 경우에 따라서 어떻게 달라지는지 확인할 수 있을 것이고, 비가상 멤버 함수와 가상 함수의 포인터가 다른 방식의 메커니즘으로 호출되는 것도 알 수 있게 된다.
이 책이 C++을 중점적으로 다루지만 C++의 근본은 바로 C 언어이듯이, C 언어의 기본 개념도 깊이 있게 다룬다. 타입의 정확한 의미와 더불어서 선언과 정의에 대해서 살펴보며, 메모리를 기준으로 포인터와 배열의 구조와 함께 차이점에 대해서도 심도 있게 다룬다.
이 책을 통해서 C++ 프로그래밍의 기본을 튼튼히 한다면 고급 프로그래밍을 하는데 많은 도움이 될 것이다.
작가 소개
저자 : 김화수
flower_excel@naver.com 서울대학교에서 컴퓨터공학을 전공했다. SMIT에서 2002 부산 아시안게임 국제 송출 CG프로그램을 개발하였고, NAVER에 입사해 P2P 시스템 및 검색광고 시스템을 개발하였으며, 현재는 클라우드 시스템 개발을 담당하고 있다. 일반 서적과 웹에서는 쉽게 접할 수 없는 프로그래밍 정보를 제공하기 위하여 [성남현인의 프로그래밍 원리] 블로그를 운영하고 있다.
목차
1. 타입 (Type)
1-1. 디지털화
1-1-1. 디지털 대상
1-1-2. 프로그래밍 대상
1-2. 정수 타입
1-2-1. 부호 없는 정수 (unsinged type)
1-2-2. 부호 있는 정수 (singed type)
1-2-3. 2의 보수법 (2's complement)
1-2-4. 타입 별 최소값 최대값
1-2-5. 비트 이동 연산자 (Shift Operator)
1-2-6. 컴파일러 상수 한계
1-2-7. 데이터 모델
1-2-8. long long format control
1-3. 부동소수점 타입
1-3-1. 고정소수점과 부동소수점
1-3-2. 부동소수점과 2진법
1-3-3. 부동소수점 구조
1-3-4. 부동소수점 표현 한계
1-3-5. 부동소수점 사용시 주의점
1-3-6. 무한 & NaN
1-4. 문자 타입
1-4-1. 유니코드
1-4-2. UTF (Unicode Transformation Format) - N
1-4-3. 은(는) 처리
1-5. 문자열
1-5-1. 문자열 클래스의 길이
1-5-2. string의 대소문자 변경
1-5-3. 문자열 타입 변환
1-6. 날짜 시간
1-6-1. struct tm
1-6-2. mktime
1-7. 참조 타입
1-7-1. 참조 타입의 실체
1-7-2. 우측 값 참조 (RValue Reference)
1-8. typedef
1-8-1. 유효 범위
1-8-2. 정의 방법
1-9. auto
1-9-1. 자동 변수 auto
1-9-2. C++0x auto
1-9-3. auto 사용
1-10