이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
Fundamental C++ 프로그래밍 원리
김화수
혜지원 2015.01.20.
베스트
IT 모바일 top100 2주
가격
28,000
10 25,200
YES포인트?
1,400원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

상세 이미지

책소개

목차


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. 정리


2. 선언과 정의
2-1. 선언과 정의의 구분
2-1-1. 정의
2-1-2. 선언
2-1-3. extern & static
2-1-4. 클래스 선언과 정의
2-2. 기억 부류 (Storage Class)
2-2-1. 논리 공간
2-2-2. 변수 할당과 초기화
2-2-3. 변수 초기값
2-2-4. 디버그 변수 초기값
2-3. 정적 변수
2-3-1. 정적 전역 변수
2-3-2. 정적 멤버 변수
2-3-3. 정적 지역 변수
2-3-4. 초기화 순서 제어
2-4. 정리


3. 빌드 (Build)
3-1. 빌드의 구성
3-1-1. 컴파일
3-1-2. 링크
3-1.3. 전처리
3-2. 전처리 지시문
3-2-1. #include
3-2-2. #define
3-2-3. #undef
3-2-4. 조건부 컴파일 지시문
3-2-5. #pragma once
3-3. 미리 정의된 매크로
3-3-1. ANSI 호환 미리 정의된 매크로
3-3-2. 컴파일러 전용 미리 정의된 매크로
3-4. 미리 컴파일된 헤더 (Pre-Compiled Header)
3-5. 링크 에러 (Link Error)
3-5-1. 확인할 수 없는 외부 참조
3-5-2. 여러 번 정의된 기호
3-6. 정리


4. 메모리
4-1. 가상 메모리
4-1-1. 가상 메모리 크기
4-1-2. 가상 메모리 주소
4-1-3. 가상 메모리 구조
4-2. 메모리 할당과 해제
4-2-1. 메모리 할당의 근원
4-2-2. malloc & free
4-2-3. new & delete
4-2-4. new [] & delete []
4-2-5. Placement new
4-2-6. _msize
4-3. 메모리와 이름
4-3-1. 메모리 블록 구성 요소
4-3-2. 이름 연산자
4-3-3. l-value로 사용되는 이름
4-3-4. r-value로 사용되는 이름(값)
4-3-5. r-value로 사용되는 이름(주소)
4-4. 정리


5. 포인터와 배열
5-1. 포인터
5-1-1. 포인터 타입
5-1-2. 타입 표기
5-1-3. 포인터와 주소 대응
5-1-4. 포인터 연산자
5-2. 배열
5-2-1. 배열 생성 및 초기화
5-2-2. 문자열 초기화
5-3. 다차원 배열
5-3-1. 2차원 배열 구조
5-3-2. 포인터 대응
5-3-3. 배열 전달
5-4. 배열의 크기
5-4-1. sizeof
5-4-2. 배열의 요소 개수
5-4-3. 가변 크기 배열 (VLA : Variable-Length Array)
5-5. vector
5-5-1. 배열과 vector
5-5-2. vector 인자
5-6. 정리


6. 클래스
6-1. 구조체와 클래스의 차이
6-2. 클래스의 메모리 구조
6-2-1. 메모리 배치 규칙
6-2-2. 멤버의 접근
6-2-3. 클래스 크기
6-3. 생성자와 소멸자
6-3-1. 암시적 생성자와 소멸자
6-3-2. 생성자와 소멸자의 호출 순서
6-3-3. virtual 소멸자
6-4. 복사 생성자와 복사 대입 연산자
6-4-1. 복사 생성자
6-4-2. 복사 대입 연산자
6-4-3. 배열 타입의 복사
6-4-4. 실전 연습
6-4-5. 복사 생성자와 복사 대입 연산자의 올바른 사용
6-4-6. 객체의 값에 의한 호출 (Call by Value of Object)
6-4-7. 복사 금지 클래스
6-4-8. RValue Reference의 이용
6-4-9. 등가 연산자
6-5. 초기화 리스트
6-5-1. 초기화 리스트의 원리
6-5-2. 초기화 리스트 사용시 주의점
6-5-3. 그 외 초기화 리스트를 사용하는 경우
6-6. 타입 변환 연산자 (Type Conversion Operator)
6-6-1. 문자열 클래스의 타입 변환 연산자
6-6-2. 타입 변환 연산자의 응용
6-7. 상속 (Inheritance)
6-7-1. 멤버 접근 지정자
6-7-2. friend
6-7-3. 상속 접근 지정자
6-7-4. 상속 클래스의 메모리 구조
6-7-5. 정적 멤버의 상속
6-7-6. 기본 클래스 함수의 상속
6-8. 다중 상속 (Multiple Inheritance)
6-8-1. 다중 상속의 메모리 구조
6-8-2. 다중 상속의 문제점 (Diamond 구조)
6-9. 가상 상속 (Virtual Inheritance)
6-9-1. 가상 상속 (Virtual Inheritance)
6-9-2. 가상 상속의 구조
6-10. 클래스 타입 변환
6-10-1. 클래스 타입 변환 기초
6-10-2. 상속 관계 클래스 타입 변환
6-10-3. 클래스 포인터 타입 변환
6-10-4. 클래스 포인터 타입 변환과 메모리 주소
6-10-5. dynamic_cast & RTTI
6-11. 정리


7. 함수
7-1. 함수 타입
7-2. 함수 호출 규약(Calling Convention)
7-2-1. cdecl
7-2-2. stdcall
7-2-3. x64 Calling Convention
7-3. Name Mangling (Name Decoration)
7-3-1. Name Mangling 포함 정보
7-3-2. C 컴파일러 Name Mangling
7-3-3. C++ 컴파일러 Name Mangling
7-3-4. extern "C"
7-4. 인자(Parameter / Argument)
7-4-1. 인자의 전달
7-4-2. 값에 의한 호출(Call by Value)
7-4-3. 참조에 의한 호출(Call by Reference)
7-4-4. 상수 참조 타입 const TYPE&
7-5. 반환 타입(Return Type)
7-5-1. 값에 의한 반환(Return by Value)
7-5-2. 참조에 의한 반환(Return by Reference)
7-6. 가변 인자 함수
7-6-1. sprintf
7-6-2. 구현
7-6-3. 문자열 클래스
7-6-4. 클래스 타입
7-6-5. 스택 정리
7-7. 클래스 멤버 함수
7-7-1. 멤버 함수 위치
7-7-2. thiscall
7-7-3. this
7-7-4. 이름 탐색 규칙
7-7-5. const 멤버 함수
7-8. 함수 객체(Functor)
7-8-1. 구현
7-8-2. for_each
7-9. 람다(Lambda)
7-9-1. 람다 기본
7-9-2. 람다 문법
7-9-3. 람다 중복
7-9-4. 멤버 함수와 람다
7-9-5. 람다 구조
7-9-6. 람다 저장
7-9-7. 람다 저장 클래스
7-10. 정리


8. 가상 함수
8-1. 가상 함수 기본 동작
8-2. 가상 함수 테이블
8-2-1. 가상 함수 호출 구조
8-2-2. 가상 함수 테이블 생성
8-3. 상속 클래스의 가상 함수
8-3-1. vfptr 초기화
8-3-2. VTable 알고리즘
8-4. 가상 함수의 호출 방식
8-4-1. 직접 멤버(.) 연산자, 간접 멤버(-〉) 연산자
8-4-2. 범위 연산자
8-5. 생성자와 소멸자
8-5-1. virtual 소멸자
8-5-2. 생성자와 vfptr
8-5-3. 소멸자와 vfptr
8-6. 순수 가상 함수 (Pure Virtual Function)
8-6-1. 가상 함수 선언과 정의
8-6-2. 순수 가상 함수 원리
8-6-3. 추상 클래스
8-6-4. 순수 가상 함수 호출
8-7. 다중 상속과 가상 함수
8-7-1. 다중 상속과 가상 함수 테이블
8-7-2. 포인터 this
8-7-3. Thunk Code
8-8. 가상 상속과 가상 함수
8-8-1. 가상 상속과 vfptr
8-8-2. Thunk Code
8-9. 정리


9장. 함수 포인터
9-1. 전역 함수 포인터
9-1-1. 함수 포인터 선언
9-1-2. 함수 포인터 타입 정의 typedef
9-1-3. 함수 포인터 구조
9-2. (비가상) 멤버 함수 포인터
9-2-1. 멤버 함수 포인터 사용
9-2-2. 멤버 함수 포인터 타입
9-2-3. 멤버 함수 포인터와 this
9-2-4. 멤버 함수 포인터 크기
9-3. 가상 상속 클래스 멤버 함수 포인터
9-3-1. 가상 상속 클래스 구조
9-3-2. Virtual Base Table Item Offset
9-3-3. 가상 상속 멤버 함수 포인터 크기
9-4. 가상 함수 포인터
9-4-1. vcall{N} 1
9-4-2. 가상 함수 포인터 호출 방식
9-4-3. vcall{N} 2
9-4-4. 가상 상속과 가상 함수 포인터
9-5. 함수 호출 규약과 함수 포인터
9-5-1. 전역 함수 포인터와 함수 호출 규약
9-5-2. 멤버 함수 포인터와 함수 호출 규약
9-6. 전방 선언 함수 포인터
9-6-1. 전방 선언 함수 포인터의 크기
9-6-2. 전방 선언 함수 포인터 사용
9-6-3. 전방 선언 함수 포인터 구조
9-7. 정리


접기

저자 소개 1

金花秀

서울대학교에서 컴퓨터공학을 전공했다. SMIT에서 2002 부산 아시안게임 국제 송출 CG프로그램을 개발했고, 이후 SK 텔레콤에서 클라우드 서비스인 클라우드베리를 개발했다. 저서로는 『Fundamental C++ 프로그래밍 원리(혜지원, 2015)』와 『기본 개념과 핵심 원리로 배우는 C++프로그래밍(한빛아카데미, 2017)』이 있으며, 2015~2017 Microsoft Visual C++ MVP(Most Valuable Professional)에 선정되었다.

김화수의 다른 상품

관련 분류

품목정보

발행일
2015년 01월 20일
쪽수, 무게, 크기
832쪽 | 1688g | 188*257*38mm
ISBN13
9788983798435

출판사 리뷰

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

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

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

이 책이 C++을 중점적으로 다루지만 C++의 근본은 바로 C 언어이듯이, C 언어의 기본 개념도 깊이 있게 다룬다. 타입의 정확한 의미와 더불어서 선언과 정의에 대해서 살펴보며, 메모리를 기준으로 포인터와 배열의 구조와 함께 차이점에 대해서도 심도 있게 다룬다.
이 책을 통해서 C++ 프로그래밍의 기본을 튼튼히 한다면 고급 프로그래밍을 하는데 많은 도움이 될 것이다.

리뷰/한줄평12

리뷰

9.2 리뷰 총점

한줄평

9.6 한줄평 총점

클린봇이 부적절한 글을 감지 중입니다.

설정
25,200
1 25,200