기본적인 C++ 서적이 아닌 중고급서라서인지 중요한 요소요소를 잘 지적하고 있다. "정말 C++의 한계가 어디일까"이 한마디로 이 책을 표현할 수 있을 거라 생각한다.
설계를 고려하지 않고도
프로그램을 잘 짜왔던 사람들도 경악하는 기발한 테크닉
이 책은 지금 시점에서 꽤 오래되었다. 하지만 책에서 다루는 내용이 언어 레퍼런스를 목표로 하지 않았기에 나이를 먹지 않는다.정신적인 충격
이 책은 언어 기본과 관련하여 몇 가지 금언으로 시작하는데, 예를 들어 상속과 다형성에 대해 아주 충분한 시간을 보내면서 쟁점의 핵심을 얻어내도록 한다. 초반부에는 단순한 관용구 예제를 몇 가지 소개한다(가상 생성자, 참조 횟수, 핸들-바디), 그리고 나서 다중 디스패치를 포함해 더 고급 주제로 넘어가며, 여태껏 보았던 책 중에서 프로토타이핑 패턴("exemplar")에 대해 가장 잘 설명하고 있다.
"패턴 위주 프로그래밍"을 위한 길을 찾고 있으며, "디자인 패턴" 책이 너무나도 어렵게 다가온다면, 이 책이 몇몇 구체적인 예제로 바로 시작할 수 있도록 당신을 이끌 것이다.
─ 미국 뉴저지 도노반 레비키
이 책은 C++로 결코 할 수 없다고 생각한 분야로 독자를 안내한다. 비록 몇몇 관용구는 낡았지만(이 책은 RTTI와 STL을 표준에 추가하기 전에 쓰였다), 그럼에도 불구하고 생각을 불러 일으키는 매우 값어치 있는 책이다.
실제로(!) 표현한 많은 아이디어는 독자들이 정말 완벽하게 이해하기에 앞서 고민하고 씨름해야 하는 과제를 안겨준다. 중/고급 C++ 프로그래머라면 누구나 읽어야 할 필독서이다. 책을 다 읽고 나면, C++의 위력을 훨씬 더 잘 완벽하게 느끼게 될 것이다.
─ 미국에서 익명 독자
1. 개요
1.1 C++: 진화하는 언어
1.2 관용구와 함께 복잡성 풀기
1.3 1990년대를 위한 객체
1.4 설계와 언어
2. 자료 추상화와 추상 자료 타입
2.1 클래스
2.2 객체 전환
2.3 생성자와 소멸자
2.4 인라인 함수
2.5 정적 자료 멤버 초기화
2.6 정적 멤버 함수
2.7 영역 지정하기와 const
2.8 전역 객체, 상수, 정적 클래스 멤버 초기화 순서
2.9 클래스 객체 멤버 함수를 위한 const 강제 사용
2.10 멤버 함수에 대한 포인터
2.11 프로그램 구성 규약
3. 구체적 자료 타입
3.1 정규 표준 클래스 폼
3.2 영역 지정과 접근 통제
3.3 오버로딩: 연산자와 함수 의미 재정의
3.4 타입 변환
3.5 참조 횟수: 변수의 ‘마법 메모리’ 사용하기
3.6 연산자 new와 delete
3.7 초기화와 인스턴스화 분리하기
4. 상속
4.1 단순 상속
4.3 생성자와 소멸자
4.4 클래스 포인터 변환
4.5 타입 선택자 필드
5. 객체지향 프로그래밍
5.1 C++ 실행 시간 타입 지원: 가상 함수
5.2 소멸자 상호 작용과 가상 소멸자
5.3 가상 함수와 영역 지정
5.4 순수 가상 함수와 추상 기초 클래스
5.5 봉투와 편지 클래스
5.6 기능자: 객체인 함수
5.7 다중 상속
5.8 상속 표준 폼
큐 반복자 예제
은행 업무 응용 프로그램 클래스
6. 객체지향 설계
6.1 타입과 클래스
6.2 객체지향 설계의 대활약
6.3 객체지향 분석과 영역 분석
6.4 객체와 클래스 관계
6.5 특수 타입, 상속, 전달
6.6 특수 타입, 상속, 독립성에 관한 주요 규칙
7. 재사용과 객체
7.1 모든 유추는 어디서든 무너지기 마련이다
7.2 설계 재사용
7.3 코드 재사용 기법 4가지
7.4 매개변수화된 타입 또는 템플릿
7.5 비공개 상속: 상속이 재사용을 지원하는가
7.6 저장 장소 재사용
7.7 인터페이스 재사용: 변형
7.8 재사용, 상속, 전달
7.9 원시 코드 재사용을 위한 구조적 대안
7.10 재사용과 객체에 대한 일반화
8. Exemplar 프로그래밍
8.1 예제: 고용인 Exemplar
8.2 Exemplar와 일반 생성자: Exemplar 공동체 관용구
8.3 자발적인 일반 생성자
8.4 추상 기초 Exemplar
8.5 프레임 Exemplar 관용구 지향
8.6 기호에 관해 한마디
8.7 Exemplar와 프로그램 관리
Exemplar-Based Simple Parser
Frame-Based Exemplars
9. 기호적 언어 스타일 흉내내기
9.1 점진적 C++ 개발
9.2 기호 표준 폼
9.3 예제: 일반 컬렉션 클래스
9.4 점진적 적재를 위한 코드와 관용구
9.5 가비지 컬렉션
9.6 기초 타입 캡슐화
9.7 기호적 관용구에 의존하는 다중 메소드
10. 동적 다중 상속
10.1 예제: 다중 기술 윈도우 시스템
10.2 주의할 점
11. 시스템 쟁점
11.1 정적 시스템 설계
11.2 동적 시스템 설계
A. C++가 바라본 C
A.1 함수 호출
A.2 함수 매개변수
A.3 함수 원형
A.4 참조에 따른 호출 매개변수
A.5 매개변수를 위한 가변적 변수 숫자
A.6 함수 포인터
A.7 const 타입 변경자
A.8 C 코드와 인터페이스 방안
B. 모양 프로그램: C++
C. 연산자에서 받은 참조 반환값
D. 비트단위 복사가 왜 안 될까
D.1 왜 멤버 대 멤버 복사가 만병통치약이 아닐까
E. 기호적인 도형
F. 블록 구조 프로그래밍
F.1 블록 구조 프로그래밍이란
F.2 조직적 C++ 프로그래밍을 위한 기초 건축 벽돌
F.3 깊이 중첩된 영역을 위한 대안
F.4 구현 시 고려사항
블록 구조 비디오게임 코드
G. C++를 사용한 리눅스와 윈도우에서 클래스 동적 적재
G.1 기본 원리
G.2 dlopen API와 관련한 문제 해결 방법
G.3 예제 소개
G.4. 고급 기법1: ‘동적 C++ 클래스’ 라이브러리
G.5. 고급 기법2: ‘동적 C++ 클래스’ 라이브러리
H-1. 연습문제 힌트
H-2. 연습문제 해답
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2016-04-06 | 다운로드 |