머리말 ... 3 인터넷 강의 안내 ... 8 Part 1. C++로의 전환 ... 16 1장 C 기반의 C++ 1 ... 17 1-1. printf와 scanf를 대신하는 입ㆍ출력 방식 ... 19 1-2. 함수 오버로딩(Function Overloading) ... 28 1-3. 디폴트(Default) 매개 변수 ... 34 1-4. 인-라인(in-line) 함수 ... 38 1-5. 이름공간(namespace)에 대한 소개 ... 40 1-6. 연습문제 정답 및 해설 ... 50 1-7. OOP 프로젝트 1단계 ... 54 2장 C 기반의 C++ 2 ... 59 2-1. 들어가기에 앞서서 ... 61 2-2. 새로운 형태의 자료형 bool ... 62 2-3. 레퍼런스(Reference)의 이해 ... 65 2-4. 레퍼런스와 함수 ... 71 2-5. 레퍼런스를 이용한 성능의 향상 ... 74 2-6. 레퍼런스를 리턴하는 함수의 정의 ... 78 2-7. new & delete ... 83 Part 2. 객체지향의 도입 ... 90 3장 클래스의 기본 ... 91 3-1. 구조체와 클래스 ... 93 3-2. 클래스와 객체 ... 103 3-3. 클래스 멤버의 접근 제어 ... 106 3-4. 멤버 함수의 외부 정의 ... 110 3-5. 연습문제 정답 및 해설 ... 115 4장 클래스의 완성 ... 119 4-1. 정보 은닉(Information Hiding) ... 121 4-2. 캡슐화(Encapsulation) ... 127 4-3. 생성자(Constructor)와 소멸자(Destructor) ... 134 4-4. 클래스와 배열 ... 158 4-5. this 포인터 ... 163 4-6. friend 선언 ... 167 4-7. 연습문제 정답 및 해설 ... 171 4-8. OOP 프로젝트 2단계 ... 175 5장 복사 생성자 ... 181 5-1. C++ & C 스타일 초기화 ... 183 5-2. 복사 생성자의 형태 ... 186 5-3. 디폴트 복사 생성자 ... 187 5-4. 깊은 복사(Deep Copy)를 하는 복사 생성자 ... 190 5-5. 복사 생성자가 호출되는 시점 ... 197 5-6. 연습문제 정답 및 해설 ... 206 5-7. OOP 프로젝트 3단계 ... 208 6장 static 멤버와 const 멤버 ... 211 6-1. 클래스와 const ... 213 6-2. 클래스와 static ... 224 6-3. 그 이외의 키워드: explicit & mutable ... 234 6-4. OOP 프로젝트 4단계 ... 236 Part 3. 객체지향의 전개 ... 238 7장 상속(Inheritance)의 이해 ... 239 7-1. 상속으로 들어가기에 앞서서 ... 241 7-2. 상속의 기본 개념 ... 242 7-3. 상속하는 클래스의 객체 생성 및 소멸 과정 ... 250 7-4. protected 멤버 ... 259 7-5. 세 가지 형태의 상속 ... 264 7-6. 상속을 하는 이유 ... 267 7-7. 연습문제 정답 및 해설 ... 271 7-8. OOP 프로젝트 5단계 ... 274 8장 상속과 다형성 ... 281 8-1. 상속의 조건 ... 283 8-2. 상속된 객체와 포인터의 관계 ... 292 8-3. 상속된 객체와 참조의 관계 ... 304 8-4. Static Binding & Dynamic Binding ... 306 8-5. "Employee Problem" 완전 해결 ... 318 8-6. virtual 소멸자의 필요성 ... 322 8-7. 연습문제 정답 및 해설 ... 326 8-8. OOP 프로젝트 6단계 ... 330 9장 virtual의 원리와 다중 상속 ... 337 9-1. 클래스의 멤버 함수는 사실 어디에 ... 339 9-2. 가상 함수가 동작하는 원리 ... 343 9-3. 다중 상속에 대한 이해 ... 346 9-4. 다중 상속의 모호성 ... 348 9-5. Virtual Base 클래스 ... 350 9-6. OOP 프로젝트 7단계 ... 352 Part 4. 객체지향의 완성 ... 362 10장 연산자 오버로딩 ... 363 10-1. 연산자를 오버로딩한다는 것은 어떤 의미인가? ... 365 10-2. 연산자를 오버로딩하는 두 가지 방법 ... 369 10-3. 단항 연산자의 오버로딩 ... 380 10-4. 교환 법칙 해결하기 ... 387 10-5. cout, cin 그리고 endl의 비밀 ... 393 10-6. 배열의 인덱스 연산자 오버로딩의 예 ... 400 10-7. 반드시 해야만 하는 대입 연산자의 오버로딩 ... 405 10-8. 연습문제 정답 및 해설 ... 412 10-9. OOP 프로젝트 8단계 ... 415 11장 string 클래스 디자인 ... 427 11-1. C++ 표준 라이브러리 ... 429 11-2. 표준 string 클래스 ... 430 11-3. 사용자 정의 string 클래스 ... 433 11-4. OOP 프로젝트 9단계 ... 439 12장 탬플릿(Template) ... 447 12-1. 템플릿(template)에 대한 이해 ... 449 12-2. 함수 템플릿 ... 452 12-3. 클래스 템플릿 ... 456 12-4. 템플릿의 원리 이해 ... 467 12-5. 연습문제 정답 및 해설 ... 470 12-6. OOP 프로젝트 10단계 ... 472 13장 예외 처리(Exception Handling) ... 477 13-1. 기존의 예외 처리 방식 ... 479 13-2. C++의 예외 처리 메커니즘 ... 482 13-3. Stack Unwinding(스택 풀기) ... 488 13-4. 예외 상황을 나타내는 클래스의 설계 ... 501 13-5. 예외를 나타내는 클래스와 상속 ... 502 13-6. new 연산자에 의해 전달되는 예외 ... 508 13-7. 예외 처리에 대한 나머지 문법 요소 ... 509 13-8. OOP 프로젝트 11단계 ... 511