목차
저자 머리말 ... 4
워밍업 ... 6
강의 계획표 ... 8
숲과 나무 이야기 ... 10
강의 보조 자료와 관련 서비스 ... 12
Chapter 01 C++ 언어
   01 C++언어의 소개 ... 22
      ISO / IEC 14882 - Programming Language C++ ... 24
      멀티 패러다임 ... 25
      C 언어와 C++ 언어 ... 26
   02 C++ 언어와 객체지향 프로그래밍 ... 25
      구조적 기법과 객체지향 기법 ... 29
      객체지향 디자인 ... 33
   03 C++ 프로그램의 구조 ... 37
      첫 번째 C++프로그램 : Hello World ... 37
      두 번째 C++프로그램 : 스택 ... 41
   04 C++ 프로그램의 개발 환경 ... 47
      비주얼 C++ ... 47
      g++를 이용한 프로그램 개발 ... 56
      요약 ... 65
      연습문제, 심화연습문제 ... 66
Chapter 02 C++ 언어의 기초
   01 입출력 ... 70
      표준 출력 ... 70
      표준 입력 ... 72
      형식 지정 입출력 ... 74
      파일 입출력 ... 78
   02 문자열 처리 ... 83
      문자열의 개념 ... 83
      String 클래스 ... 85
   03 메모리 관리 ... 98
new와 delete 연산자 ... 99
      배열의 할당과 해제 ... 104
new와 delete의 생성자, 소멸자 호출 ... 106
   04 함수의 기본 인자 ... 110
   05 레퍼런스 ... 113
      함수 호출에서의 인자 전달 ... 115
      레퍼런스와 포인트 ... 118
   06 네임스페이스 ... 120
      선언 범위와 영역 ... 121
      네임스페이스의 정의 ... 123
   07 명시적 타입 변환 ... 133
      요약 ... 137
      연습문제, 심화연습문제 ... 138
Chapter 03 클래스
   01 클래스와 객체지향 프로그래밍 ... 142
   02 클래스의 작성 ... 143
   03 클래스의 정의 ... 147
      멤버 ... 148
      생성자와 소멸자 ... 150
      복사 ... 156
      멤버의 생성과 초기화 목록 ... 159
      다양한 형태로의 생성 ... 164
      this 포이터 ... 168
      접근 지정 ... 171
      정방 선언 ... 174
      요약 ... 176
      연습문제, 심화연습문제 ... 177
      현장의 목소리 : 소스 코드 공유를 위한 패턴 ... 180
Chapter 04 상속
   01 상속 ... 186
   02 protected 멤버 ... 195
   03 상속의 유형 ... 198
public 상속 ... 198
private 상속 ... 200
protected 상속 ... 202
      접근 지정자를 명시하지 않는 상속 ... 203
   04 인스턴스의 생성과 소멸 ... 205
      생성자, 소멸자의 실행 ... 205
      초기화 목록에 의한 생성 지정 ... 208
   05 오버라이딩 ... 210
   06 접근 선언 ... 213
   07 업캐스팅과 다운케스팅 ... 215
      요약 ... 218
      연습문제, 심화연습문제 ... 219
Chapter 05 클래스 완성
   01 복사 생성자 ... 224
      기본 복사 생성자 ... 225
      기본 복사 생성자의 문제점 ... 226
      사용자 정의 복사 생성자 ... 227
      복사 생성자를 포함한 array 클래스 ... 229
   02 프렌드 ... 232
      프렌드의 선언 ... 233
      프렌드 관계의 속성 ... 238
      상호 프렌드와 공유 프렌드 ... 240
   03 내장 클래스 ... 242
      내장 클래스를 이용한 큐의 구현 ... 243
   04 클래스와 static, const, mutable ... 250
static 지시자 ... 250
      const 한정자 ... 254
      mutable 지시자 ... 258
   05 explicit 지시자 ... 260
      요약 ... 263
      연습문제, 심화연습문제 ... 264
Chapter 06 가상 함수와 다중 상속
   01 가상 함수와 다중 상속의 개요 ... 268
   02 가상 함수와 순수 가상 함수 ... 271
      가상 함수 ... 272
      다형적 타입과 동적 바인딩 ... 275
      순수 가상 함수 ... 276
      실행 시간 타입 정보(RTTI, Run-Time Type Information) ... 279
   03 추상 클래스 ... 287
      추상 클래스의 정의 ... 287
      추상 클래스의 예 ... 292
   04 가상 소멸자 ... 295
   05 다중 상속 ... 302
      다중 상속의 정의 ... 303
      다중 상속에서의 가상 함수 ... 305
      상속에서의 애매함 ... 309
   06 가상 상속 ... 312
      가상 기본 클래스 ... 313
      가상 기본 클래스의 생성 책임 ... 316
   07 다중 상속에서의 생성과 소멸의 순서 ... 320
      일반 클래스군의 생성 ... 320
      가상 상속이 있는 클래스군의 생성 ... 322
      요약 ... 324
      연습문제, 심화연습문제 ... 325
      현장의 목소리 : 비주얼 스튜디오의 자동화 ... 331
Chapter 07 오버로딩
   01 오버로딩의 개요 ... 336
      오버로딩의 개념 ... 336
   02 함수 오버로딩 ... 338
      오버로딩에서 주의할 점 ... 339
      오버로딩의 예 : 다양한 방법으로 파일 열기 ... 345
      오버로딩된 함수의 선택 ... 349
      오버로딩된 함수의 바인딩 ... 352
      멤버 함수의 오버로딩 ... 352
   03 연산자 오버로딩 ... 355
      연산자 오버로딩의 정의 ... 357
      사칙 연산자 ... 362
      대입 연산자 ... 365
      전위, 후위 증감 연산자 ... 373
      첨자 연산자 ... 378
      함수 호출 연산자 ... 380
      멤버 접근 연산자와 역참조 연산자 ... 383
      오버로딩이 가능한 연산자와 가능하지 않는 연산자 ... 385
      요약 ... 389
      연습문제, 심화연습문제 ... 390
Chapter 08 템플릿
   01 개요 ... 396
      제네릭 프로그래밍과 템플릿 ... 397
   02 템플릿 함수 ... 400
      템플릿 함수의 정의 ... 400
      템플릿 실체화 ... 404
      헤더와 템플릿 ... 408
      템플릿의 매개 변수 ... 412
      템플릿 내의 static 변수 ... 416
   03 특화 ... 418
   04 템플릿 클래스 ... 421
      템플릿 클래스의 정의 ... 421
      템플릿 클래스의 멤버 ... 422
      클래스 내에서의 또 다른 템플릿 선언 ... 425
      기본 템플릿 인자 ... 432
      템플릿 클래스의 프렌드 ... 434
      템플릿 템플릿 인자 ... 436
   05 표준 템플릿 라이브러리 ... 439
      헤더와 네임스페이스 ... 440
      컨테이너 ... 444
      함수 객체 ... 452
      알고리즘 ... 454
      이터레이터 ... 456
      요약 ... 458
      연습문제, 심화연습문제 ... 459
chapter 09 예외처리
   01 예외 처리의 소개 ... 464
      에러의 처리 ... 464
      예외 처리의 구조 ... 467
   02 예외의 발생 지정 ... 482
   03 중첩된 예외 처리 ... 485
   04 모두 처리 ... 488
   05 다시 던지기 ... 491
   06 try 블록 함수 ... 493
   07 예외와 관련된 특별한 세 가지 함수 ... 498
      terminate ... 498
      unexpected ... 501
      uncaught.exception ... 503
   08 에러 처리와 반환 값을 이용한 에러 처리의 비교 ... 506
   09 자원 관리와 예외 처리 : 스택 비우기 ... 509
      예외와 자원 누수 ... 509
      소멸자에서의 예외 발생 ... 513
      함수 terminate에서의 스택 상태 ... 515
      생성자에서 발생하는 예외 처리 ... 515
   10 표준 예외 클래스 ... 519
      기반 예외 클래스 exception ... 519
      logic_error와 runtime_error ... 520
      기타 예외 클래스 ... 523
   11 예외에 강건한 프로그램 설계 : Exception Safety ... 524
      예외 처리의 어려움 ... 524
      표준 라이브러리에서의 예외 처리 ... 526
      객체의 관점에서 본 예외에 대한 안전성 ... 527
      프로그램 작성 원칙 ... 527
      요약 ... 534
      연습문제, 심화연습문제 ... 535
Chapter 10 프로젝트 : 바이너리 탐색 트리
   01 바이너리 탐색 트리 ... 540
      트리의 구조 ... 541
      트리의 검색 효율 ... 542
      꽉 찬 트리와 균형 트리 ... 544
      효율적 바이너리 탐색 트리의 구성 ... 545
   02 알고리즘 ... 547
      삽입 연산 ... 547
      탐색 ... 549
      삭제 ... 550
      모든 노드의 방문 ... 554
   03 설계 및 알고리즘 ... 557
      배열과 포인터 ... 557
      추가 연산 ... 564
      탐색 연산 ... 566
      삭제 연산 ... 569
      방문 연산 ... 574
   04 전체 프로그램 ... 575
      요약 ... 588
      연습문제, 심화연습문제 ... 589
찾아보기 ... 592
닫기