전문가 수준 C++ 프로그래머와 그저 문법을 아는 C++ 프로그래머
그 차이를 만드는 C++14 최고의 실전 가이드!
개정3판은 코드 중심의 실용적인 C++ 애플리케이션 디자인&코딩 가이드로 C++14 표준을 기반으로 한다. 문법만 안다고 C++ 프로그래머가 되는 것은 아니다. 이 책은 C++의 유용한 기능을 최대한 효과적으로 활용하여, 올바른 프로그래밍 스타일로 개발하는 요령과 기법을 다룬다. 따라서 실전 프로그래밍에 필요한 C++의 복잡한 기능을 올바르게 이해하고 범하기 쉬운 실수를 피하기 위한 노하우를 전수받게 될 것이다.
[Part 1 전문가를 위한 C++ 개요]
CHAPTER 1 C++와 STL 부딪혀보기
1.1 C++ 언어의 기초
1.2 C++ 언어 심화 탐구
1.3 객체지향 언어로서의 C++
1.4 표준 라이브러리
1.5 첫 C++ 프로젝트
1.6 요약
CHAPTER 2 문자열의 활용
2.1 동적 문자열
2.2 요약
CHAPTER 3 코딩 스타일
3.1 보기 좋은 코드의 중요성
3.2 코드의 문서화
3.3 코드 분할
3.4 네이밍
3.5 스타일이 있는 언어의 활용
3.6 포매팅
3.7 스타일 적용의 장애물
3.8 요약
[Part 2 전문가다운 C++ 소프트웨어 디자인]
CHAPTER 4 전문가를 위한 C++ 프로그램 디자인
4.1 프로그램 디자인이란?
4.2 프로그램 디자인의 중요성
4.3 C++ 디자인의 특징
4.4 C++ 디자인의 두 가지 원칙
4.5 코드의 재사용
4.6 패턴과 테크닉을 이용한 디자인
4.7 체스 프로그램 디자인하기
4.8 요약
CHAPTER 5 객체를 이용한 디자인
5.1 절차적 사고방식이란 무엇인가?
5.2 객체지향 철학
5.3 객체 세상에서 생각하기
5.4 객체 간 관계
5.5 추상화
5.6 요약
CHAPTER 6 재사용성을 높이는 디자인
6.1 재사용 철학
6.2 재사용성이 높은 코드를 디자인하는 방법
6.3 요약
[Part 3 제전문가다운 코딩 방법]
CHAPTER 7 클래스와 객체에 능숙해지기
7.1 스프레드시트 실습
7.2 클래스 만들기
7.3 객체의 라이프 사이클
7.4 요약
CHAPTER 8 클래스와 객체 마스터하기
8.1 동적 메모리 할당을 통한 객체 생성
8.2 여러 종류의 데이터 멤버
8.3 메서드의 종류
8.4 중첩된 클래스
8.5 클래스 종속 열거 데이터 타입
8.6 friend 속성
8.7 연산자 오버로딩
8.8 안정된 인터페이스 만들기
8.9 요약
HAPTER 9 클래스 상속 활용 테크닉
9.1 상속을 통한 클래스 생성
9.2 코드 재사용을 위한 상속
9.3 부모를 존중하라
9.4 다형성을 위한 상속
9.5 다중 상속
9.6 상속과 관련된 미묘한 문제들
9.7 요약
CHAPTER 10 C++의 까다롭고 유별난 부분들
10.1 참조형
10.2 키워드 혼동
10.3 타입과 캐스팅
10.4 스코프 지정
10.5 C++11 / C++14
10.6 헤더 파일
10.7 C 유틸리티
10.8 요약
CHAPTER 11 템플릿을 이용한 제네릭 코드 작성
11.1 템플릿 개괄
11.2 템플릿 클래스
11.3 함수 템플릿
11.4 템플릿 변수
11.5 요약
CHAPTER 12 C++ I/O 이해하기
12.1 스트림의 사용
12.2 문자열 스트림
12.3 파일 스트림
12.4 양방향 I/O
12.5 요약
CHAPTER 13 에러 처리
13.1 에러와 익셉션
13.2 익셉션의 동작 구조
13.3 익셉션과 다형성
13.4 스택 되돌림과 리소스 해제
13.5 흔한 에러 처리 관련 문제
13.6 포괄적인 예제
13.7 요약
CHAPTER 14 C++ 연산자 오버로딩
14.1 연산자 오버로딩 개괄
14.2 산술 연산자의 오버로딩
14.3 비트 연산자와 논리 연산자의 오버로딩
14.4 입력 연산자와 출력 연산자의 오버로딩
14.5 서브스크립팅 연산자의 오버로딩
14.6 함수 호출 연산자의 오버로딩
14.7 역참조 연산자의 오버로딩
14.8 변환 연산자 만들기
14.9 메모리 할당과 해제 연산자의 오버로딩
14.10 요약
CHAPTER 15 C++ 표준 라이브러리 살펴보기
15.1 코딩 원칙
15.2 C++ 표준 라이브러리 개괄
15.3 요약
CHAPTER 16 컨테이너와 반복자 이해하기
16.1 컨테이너 개괄
16.2 순차 컨테이너
16.3 컨테이너 어댑터
16.4 연관 컨테이너
16.5 비순차 연관 컨테이너 - 해시 테이블
16.6 기타 컨테이너
16.7 요약
CHAPTER 17 STL 알고리즘 마스터하기
17.1 알고리즘 개괄
17.2 람다 표현식
17.3 함수 객체
17.4 STL 알고리즘 심화 탐구
17.5 알고리즘 예제: 선거인 명부 검사
17.6 요약
CHAPTER 18 문자열 로컬라이제이션과 정규 표현식
18.1 로컬라이제이션
18.2 정규 표현식
18.3 요약
CHAPTER 19 부가적인 유틸리티 라이브러리
19.1 std::function
19.2 분수
19.3 크로노 라이브러리
19.4 난수 생성
19.5 튜플
19.6 요약
[Part 4 C++ 고급 기능 마스터하기]
CHAPTER 20 STL의 커스터마이징과 확장
20.1 할당자
20.2 반복자 어댑터
20.3 STL 확장하기
20.4 요약
CHAPTER 21 고급 템플릿
21.1 템플릿 파라미터 심화탐구
21.2 템플릿 클래스의 부분 특수화
21.3 오버로딩을 이용해서 템플릿 함수의 부분 특수화 흉내 내기
21.4 재귀 템플릿
21.5 타입 추론
21.6 가변 인자 템플릿
21.7 메타프로그래밍
21.8 요약
CHAPTER 22 효과적인 메모리 관리
22.1 동적 메모리의 활용
22.2 배열과 포인터의 닮은꼴
22.3 저수준 메모리 동작 메커니즘
22.4 스마트 포인터
22.5 흔하게 발생하는 메모리 문제
22.6 요약
CHAPTER 23 C++ 멀티스레드 프로그래밍
23.1 C++ 스레딩 라이브러리 소개
23.2 스레드
23.3 아토믹 작업 라이브러리
23.4 상호 배제
23.5 조건 변수
23.6 future
23.7 멀티스레드 Logger 클래스 예제
23.8 스레드 풀
23.9 스레딩 디자인 요령
23.10 요약
[Part 5 C++ 소프트웨어 엔지니어링]
CHAPTER 24 여러 가지 소프트웨어 엔지니어링 방법론
24.1 절차의 필요성
24.2 소프트웨어 생명 주기 모델
24.3 소프트웨어 엔지니어링 방법론
24.4 나만의 개발 절차와 방법론 만들기
24.5 소스 코드 관리
24.6 요약
CHAPTER 25 효율적인 C++ 코드 작성
25.1 성능과 효율 개괄
25.2 언어 수준 효율성
25.3 디자인 수준 효율성
25.4 프로파일링
25.5 요약
CHAPTER 26 디버깅 완전정복
26.1 디버깅의 기본 원칙
26.2 버그의 분류
26.3 버그 방지
26.4 버그 대응 계획
26.5 디버깅 테크닉
26.6 요약
부록 A C++ 인터뷰
부록 B 참고 문헌
부록 C 표준 라이브러리 헤더 파일
최신 C++를 마스터하기 위해 알아야 할 C++와 C++14의 모든 것
C++ 전문가가 되기 위해 필요한 내용을 조목조목 옮겼다. C++의 기본 기능에서 널리 알려지지 않았던 기능까지 설명한다. 오랜 역사를 지닌 C++ 언어에 대한 오해와 올바른 프로그래밍 방법을 소개한다. C++ 언어의 핵심 기능, 템플릿, 표준 라이브러리(STL), 문자열, 입출력과 같은 기본부터 제네릭 코드 작성, 타입 추론, 템플릿 재귀, 메타프로그래밍, 메모리 관리, 멀티스레드 같은 고급 기능까지 다룬다. 소프트웨어 엔지니어링 측면에서 알아야 할 버전 관리, 소프트웨어 개발 방법론, 코드 최적화, 테스팅, 디버깅, 프레임워크, 디자인 패턴까지 소개해 C++ 전문가가 되고 싶은 독자는 물론 현업 C++ 전문가도 전체 지식을 복습할 수 있게 했다.
대상독자
수년 동안 C++를 사용해왔다고 할지라도 익숙하지 않거나 알지 못했던 기능 때문에 C++의 능력을 100% 활용하지 못했을 수 있다. C++를 활용하는 데 어느 정도 자신감이 있더라도 C++에서의 디자인 방법론을 더 연마하거나 좋은 디자인 스타일을 배우고 싶을 수 있다.
그리고 어떤 경우에는 C++를 처음으로 접하면서 올바른 방식으로 첫 단추를 꿰고 싶을 수 있다. 이 책은 C++ 초·중급 수준의 지식을 가진 사람이 C++ 전문가로 성장할 수 있도록 돕는 데 초점이 맞추어져 있기 때문에 C++를 조금이라도 접해본 사람을 대상으로 한다.
이 책의 내용
- 실용적인 문제를 기반으로 한 예제를 통한 학습
- 윈도우와 리눅스에서 테스트된 광범위하고 상세한 예제 코드
- 좋은 프로그래밍 스타일로 이끄는 요령과 테크닉 그리고 디버깅 방법론
- 제네릭 람다, 람다 캡쳐 표현식, 함수 리턴 타입 연역, 이진 리터럴 등 최신 기능
- make_unique, 투명 함수 객체, 타입을 통한 튜플 항목 접근, 공유 뮤텍스와 락 등 최신 표준 라이브러리 기능
이 책의 상세 구성
< 1부 전문가를 위한 C++ 개요>
C++의 기초적인 부분을 둘러보고 C++를 배우기 위한 기초를 닦는다. 기초적인 부분을 둘
러본 다음에는 문자열의 활용 방법에 대해 깊이 있게 살펴본다. 대부분의 예제에서 문자열
을 많이 이용하기 때문에 문자열에 대한 이해가 먼저 필요하다. 1부의 마지막에서는 가독성
높은 C++ 코드를 어떻게 작성할 수 있는지 알아본다.
<2부 전문가다운 C++ 소프트웨어 디자인>
C++ 디자인 방법론을 다룬다. 디자인이 왜 중요한지, 객체지향 방법론이 무엇인지, 코드의
재사용이 왜 중요한지 알게 될 것이다.
<3부 전문가다운 코딩 방법>
C++의 기술적인 부분을 전문적인 관점에서 살펴본다. 재사용 가능한 클래스를 만드는 방법,
상속과 같은 C++의 중요한 기능을 활용하는 방법을 이야기한다. 그리고 C++만
이 가진 특이 사항, 입출력 테크닉, 에러 처리, 문자열 로컬라이제이션, 정규 표현식의 사용
법도 알아본다. C++ 표준 라이브러리의 컨테이너, 반복자, 알고리즘에 대해서도 설명한다.
시간과 날짜 처리나 랜덤 숫자를 활용하기 위한 부가적인 라이브러리 기능도 알아본다.
<4부 C++ 고급 기능 마스터하기>
C++의 기능을 최대로 활용하는 예제를 소개한다. C++의 다소 난해한 기능과 그러한 기능
을 이용하는 고급 테크닉을 설명한다. C++ 표준 라이브러리를 필요에 따라 커스터마이즈
하고 확장하는 방법, 가장 효과적인 메모리 관리 방법, 고급 템플릿 프로그래밍과 템플릿 메
타프로그래밍, 멀티프로세서와 멀티코어를 활용하기 위한 멀티스레딩의 활용 방법 등을 포
함한다.
<5부 C++ 소프트웨어 엔지니어링>
상용 수준의 소프트웨어 품질을 어떻게 달성할 수 있는지에 초점을 맞추어 오늘날 여러 소
프트웨어 회사에서 채용하고 있는 소프트웨어 엔지니어링 사례와 C++ 프로그램 디버깅 테
크닉과 효과적인 C++ 코드 작성법을 알아본다.
<부록>
부록에서는 C++ 개발자 인터뷰에서 유용하게 활용할 수 있는 각 장별 가이드와 참고 문헌
그리고 C++ 표준 라이브러리의 헤더 파일에 대한 요약이 제공된다.
자료명 | 등록일 | 다운로드 |
---|---|---|
![]() |
2020-11-13 | 다운로드 |
공동환
최호성
오즈 모리하루