목차
Part 1. 이론
   들어가기전에 ... 3
      정수의 크기 ... 3
      이진수, 16진수 및 2의보수 ... 4
      스택(stack) 동작 ... 5
      표현식(expression) ... 5
      특별한 연산자 [], () ... 6
      C++의 메모리 할당 연산자 new 와 delete ... 7
      함수 포인터(pointer to a function) ... 14
      심벌 테이블(symbol table) ... 16
      실습문제 ... 17
   1장 C++의 구조체 ... 19
      좀 더 자연스러운 구조체 ... 27
      실습문제 ... 36
   2장 선언 변경자 ... 37
      변경자의 종류 ... 47
      한정자(qualifier) : const와 volatile ... 49
      변덕장이 mutable ... 53
      explicit ... 54
      호출관례(calling conventions) ... 56
      선언의 예 ... 60
      실습문제 ... 61
   3장 함수이름 오버로딩(function name overloading) ... 63
      함수 오버로딩이 필요한가? ... 66
      모호함(ambiguity) ... 69
      제한점 ... 70
      다른범위(scope)에서의 오버로드 ... 70
      적절한 아규먼트를 가지는 함수찾기 ... 72
      멤버 함수의 오버로드 ... 73
      DWORD에 FLOAT를 라운드오프(round-off) 에러 없이 전달하기 ... 75
      실습문제 ... 76
   4장 기정의 파라미터(default argumnet) ... 79
      향상된 기교 ... 81
      기정의 파라미터의 표현식(expression) ... 85
      다른 고려사항 ... 86
      디폴트 생성자에 사용된 디폴트 파라미터 ... 86
      실습문제 ... 88
   5장 참조(reference)와 별명(alias) ... 89
      별명(alias) ... 90
      별명이 번역되는 원리 ... 93
      참조에 의한 호출(call by reference) ... 94
      기우(imagined fears) ... 96
      참조의 초기화 ... 97
      참조를 리턴하는 함수 ... 98
      진보된 주제 ... 99
      실습문제 ... 100
   6장 new와 delete : 진보된 주제 ... 101
      함수 포인터 배열(array of pointers to functions)의 할당 ... 102
new/delete의 오버로딩(overloading) ... 105
      명시적 호출(explicit call) ... 109
new/delete의 오버로딩 : 배열형식 ... 110
      동적 2차원 배열(1) : 특별한 포인터 ... 111
      동적 2차원 배열(2) : 포인터의 포인터 ... 114
      동적 2차원 배열(3) : 연산자 오버로딩 ... 117
      실습문제 ... 120
   7장 함수형 초기화 ... 121
      생성자(constructor) ... 122
      레퍼런스와 상수의 초기화 ... 124
      베이스 클래스의 생성자 호출과 멤버 객체의 초기화 ... 128
      멤버 객체의 초기화 ... 129
      외워야 할 표(table) ... 130
      함수형 형 변환(functional casting) ... 132
      실습문제 ... 133
   8장 클래스 계층도(class hierarchy)를 그리는 법 ... 135
      UML 도구 ... 139
      실습문제 ... 140
   9장 C++ 객체 모델(object model) 그리고 오토마타 ... 141
      클래스, 객체 그리고 인스턴스(class, object and instance) ... 142
      IS-A 관계(is-a relationship) ... 146
      상속(inheritance) ... 147
      인스턴스(instance)와 객체 : 또 다른 나 ... 149
      불완전한 예 ... 152
      오버라이딩(overriding) ... 154
      접근 권한의 지정과 변경 ... 158
      접근 선언(access declaration) ... 164
      외워야 할 표 ... 164
      HAVE-A 관계(have-a relationship) ... 164
      IS-A vs. HAVE-A ... 164
      다른 모델, 오토마타(automata) ... 171
      언제 오토마타를 이용하는가? ... 174
      오토마타 설계 : 예(example) ... 178
      객체 모델과 오토마타의 결합 ... 181
      다중 상속(multiple inheritance) ... 183
      실습문제 ... 184
   10장 생성자(constructor), 소멸자(destructor) ... 185
new를 사용한 경우의 생성자 호출 ... 191
      생성자의 오버로딩(overloading) ... 194
      소멸자의 오버로딩? ... 197
      함축적인 변환(implicit conversion) ... 197
      생성자와 소멸자는 직접 호출할 수 없다? ... 199
      explicit : 명시적 생성자 호출 ... 203
      객체 배열(object array)에서 생성자 호출 ... 205
      복사 생성자(copy constructor) ... 209
      복사 생성자가 호출되는 경우 ... 217
      리턴형의 (void) 형변환 ... 226
      오해(misunderstanding) ... 227
      베이스 클래스와 멤버 객체의 생성자 호출 ... 230
      생성자와 소멸자의 접근 권한 ... 232
static 객체 생성자의 특별한 동작 ... 235
      실습문제 ... 239
   11장 범위 해결사(scope resolver) ... 241
      멤버 함수의 정의 ... 243
      전역과 지역의 구분 ... 244
      정적 멤버의 접근 ... 246
      상속에서 범위 해결 ... 248
      이름공간의 범위표시 ... 251
      실습문제 ... 251
   12장 인라인 함수 ... 253
      보이지 않는 오버헤드 : 프리픽스(prefix)와 서픽스(suffix) ... 254
      매크로 함수(macro function) ... 257
      인라인 함수 ... 257
      템플릿(template) 인라인 함수 ... 259
      자동 인라인(automatic inline) ... 259
      주의사항 ... 261
      인라인배열 ... 261
      실습문제 ... 262
   13장 친구(friends) ... 263
      친구 클래스 : friendship principle ... 269
      무서운 우정의 원리 ... 271
      실습문제 ... 272
   14장 가상함수 ... 273
      가상(virtual)의 의미 ... 274
subtype의 원리(subtype principle) ... 274
      하나의 인터페이스(interface)에 다수의 방법들, 가상함수, 추상클래스, 실행시 다형성 ... 279
      순수 가상함수 ... 279
      오버라이딩(overriding) ... 283
      주의사항 : 베이스 클래스의 멤버함수에서의 가상함수의 호출 ... 288
      COM(Component Object Model) ... 290
      가상 베이스 클래스(virtual base class) ... 291
      가상 소멸자(virtual destructor) ... 297
      메시지 맵(message map) ... 299
      Hello Windows 95! ... 302
      Pointer to Member operator : .* and ->* ... 314
      Error : Undeclared Identifier ... 314
      가상 함수 테이블(VTable : virtual function table) : 진보된 주제 ... 315
      외워야 할 표(table) ... 320
      멤버 함수에 대한 포인터 ... 321
      진보된 주제 : 가상 함수 테이블의 원리 ... 324
      주의! 생성자 소멸자에서의 가상함수 호출 ... 335
      다중 상속에서의 가상함수 테이블 ... 337
      실습문제 ... 339
   15장 this 포인터 ... 341
      반드시 this가 필요한 경우 ... 346
      상수 멤버 함수(const member function)와 mutable ... 353
      실습문제 ... 357
   16장 템플릿(template) : 메타(meta) 클래스 ... 359
      명시적 지정(explicit specification) ... 365
      클래스 템플릿(class template) ... 366
      디폴트 지정 ... 376
      typename ... 377
      템플릿 안에 사용된 typedef ... 388
      미리정의된 Template 파라미터(preparameterized template) ... 380
      미리 정의된 파라미터를 가지는 템플릿 클래스 ... 402
      진보된 주제 : STL(Standard Template Library) ... 407
      아이터러터(iterator) ... 409
      진보된 주제 : STL 개념 정리 ... 414
      저자와의 대화 : 무엇을 공부해야 하는가? ... 417
      실습문제 ... 419
   17장 연산자 오버로딩(operator overloading) ... 421
      더 유용한 도구 : 오버로딩 ... 422
      왜 에러인가? ... 424
      새로운 키워드 operator ... 425
      컴파일러의 입장 : 나 피곤해요(^_^) ... 428
      복사 생성자(copy constructor) ... 432
      명시적 호출(explicit call) ... 433
      불가능의 이유 : 친구가 필요하다! ... 434
      오버로딩 할 수 없는 연산자 ... 440
      형 변환 연산자(type conversion operator) ... 440
      사용자 정의 형 변환 함수(user defined conversion operator) ... 442
      다른 예들 ... 443
      []의 오버로딩 : 참조의 리턴 ... 443
      >의 오버로딩 ... 447
      ()의 오버로딩 ... 448
      크기를 설정 할 수 있는 행렬 ... 450
      진보된 주제 : 펑터(functor) ... 455
      ++의 오버로딩 ... 457
      =의 오버로딩 ... 461
      >>의 오버로딩 ... 462
      콤마(,)의 오버로딩 ... 462
      ->의 오버로딩 ... 464
      진보된 주제 : ATL(ActiveX Template Library)에 사용된->의 오버로딩 ... 465
new와 delete의 오버로딩 ... 467
      실습문제 ... 468
   18장 Win32 메모리 모델 ... 469
      페이지 : 외부 단편화로부터의 해방 ... 470
      가상메모리 ... 476
      Windows98, Windows 2000 ... 480
      그 때 그 시절, 핸들(handle)이 필요했다! ... 485
      실습문제 ... 480
   19장 존재의 이유 ... 491
      멤버 변수(member variable)의 주소 ... 492
static에 관한 진실 ... 496
      마술 ... 498
      토큰(token), 스캐너(scanner) ... 498
      순수가상함수 ... 501
      디폴트 생성자가 꼭 필요하다! ... 507
      []의 오버로딩 : 3차원 동적 배열 ... 513
      실습문제 ... 514
   20장 새로운 형태의 형 변환(typecasting) ... 515
      해결되지 않은 천덕꾸러기 캐스팅(casting) ... 516
      왜 캐스팅(casting)이 필요한가? ... 518
      사용자 정의 형 변환 ... 519
static_cast ... 521
      downcast ... 521
      [수정] 하지만, 항상 안전하지 않음 ... 526
      const_cast ... 527
      dynamic_cast ... 528
      reinterpret_cast ... 531
      Type & Tricks ... 533
      실습문제 ... 534
   21장 RTTI(run-time type information) ... 535
      왜 이것이 필요한가? ... 536
      실행시에 객체의 클래스 이름 얻기 ... 537
      매크로의 사용 ... 540
      기우(imagined fear) : 잘 사용하지 않는 연산자 와 ... 540
      : 스트링화 연산자 ... 540
      : 토큰(token)연결 연산자 ... 541
      무엇이 좋아졌는가? ... 543
      동적생성(dynamic creation)을 지원하려면? ... 544
      어떻게 동적 생성이 가능한가? ... 547
      매크로 사용 전 소스 ... 547
      매크로 사용 후 소스 ... 551
      매크로와 CRuntimeClass 및 CObject가 'afx.h'에 미리 만들어져 있다고 가정했을때의 소스 코드 ... 555
      새로운 형태의 형변환 : 추가된 키워드 ... 556
      새로운 키워드 typeid ... 557
      typeid의 정체 : 진보된 주제 ... 562
      실습문제 ... 564
   22장 이름 공간(namespace) ... 565
      왜 namespace를 사용하는가? ... 567
namespace의 변수를 사용하는 법 ... 568
      using의 범위 ... 570
      클래스 안에서 using의 사용 ... 571
      이름 공간의 별명(alias) ... 574
      무명 이름공간(anonymous namespace) ... 575
      전이적(transitive) ... 576
      실습문제 ... 576
   23장 예외처리(exception handling) ... 577
      예외(exception)란? ... 578
      결정(fault)과 오류(error) ... 578
      고전적인 방법, 최근의 방법 ... 579
      여러 catch 블락, 그래도...안되면... ... 584
      try안의 try ... 587
      예외의 제한 및 전파(propagation) ... 588
      기교(technique) ... 590
      컴파일러의 입장 : Stack Unwinding ... 592
      표준 예외 처리 클래스(exception handling class) ... 593
      그래도 없다면! ... 594
      예외처리의 오버헤드 ... 595
      구조적 예외 처리(SEH : structured exception handling) ... 595
      실습문제 ... 560
   24장 주의 사항 ... 597
      짧은 평가(Short Circuit) ... 598
      멤버 변수의 주소 ... 599
      디폴트(default)선언에서의 초기화 ... 600
      스트링 초기화 ... 601
static const의 초기화 ... 602
      다음선택 ... 602
   25장 키워드(keyword) ... 603
      대체 토큰(alternative token) ... 604
      키워드(keyword) ... 605
      연산자와 구두점(operator and punctuator) ... 607
      리터널 ... 607
      실습문제 ... 608
   26장 Stroustrup과의 실제 인터뷰 ... 609
      The Real Stroustrup Interview ... 617
      표준 C++(STANDARD C++) ... 618
      새로운 기술의 실행가능성(Feasibility of new techniques) ... 619
      표준 라이브러리(The Standard Library) ... 623
      복잡성, C++와 객체 지향 프로그래밍 ... 625
      자바와 C++(JAVA AND C++) ... 628
      도구(TOOLS) ... 630
      미래(THE FUTURE) ... 631
   27장 표준화 유감 ... 633
      using의 기능개선 : 객체의 범위 해결 ... 634
      매크로 배열(macro array) ... 636
      정적 변수와 정적 함수의 참조 ... 637
      실습문제 ... 638
   28장 코딩관례 ... 639
      명칭 ... 640
      장식 ... 643
      메모리 샘 방지 ... 650
      빈 스티링(empty string)과 널 스트링(null string) ... 651
      복사문제(copying problem) ... 652
      {의 위치 ... 652
      enum 상수 ... 653
      가상(vitual) ... 653
      template의 위치 ... 654
      파일 ... 654
      문서화 ... 654
      기타 ... 655
Part 2. 게임활용
   29장 COM의 이해 ... 659
      COM이란? ... 660
      C++을 이용한 KBareCom의 설계 ... 662
      C를 이용한 KBareCom의 설계 ... 664
      C와 C++에 독립적으로 KBareCom을 정의하기 ... 667
      COM의 정리 ... 671
      실습문제 ... 672
   30장 Functor의 이해 ... 673
      펑터 ... 676
      펑터의 추가적인 이점 ... 681
      실습문제 ... 682
   31장 GDI ... 683
      Win32 코드의 생성 ... 684
      그리는 코드의 추가 ... 688
      Render()하뭇의 설명 ... 690
      실습문제 ... 692
   32장 왜 Matrix인가? ... 693
      오래된 정의(definition) ... 694
      왜 normalize된 서로 직각인 세 개의 축인가? ... 702
      선형변환(linear transformation) ... 704
      일관된 선형 변환 ... 707
      3차원 벡터 클래스 ... 710
      폴리곤(Polygon, 다각형) 표현 ... 712
      회전 변환과 위치 변환 ... 718
      매트릭스(matrix)클래스 ... 722
      렌더링파이프라인(rendering pipeline) ... 736
      실습문제 ... 739
   33장 2차원 충돌검사 ... 741
      사각형(rectangle) 충돌의 탐지 ... 742
      선 충돌 ... 746
      다각형 충돌검사 ... 753
      L-시스템(L-system) ... 753
      문맥 자유 문법(CFG, context free grammar) ... 753
      예(example) ... 755
      단계(1-3) ... 759
      실습문제 ... 784
   34장 알고리즘 ... 785
      용어정의 ... 786
      Rabin-Karp의 스트링 매칭 알고리즘 ... 787
      이차원 패턴 매칭 ... 794
      스트링 거리(String Distance) ... 794
      타이핑거리(typing distance) ... 802
      명령 자동 전환기 ... 803
      실습문제 ... 810
부록
   부록 1장 Xor 애니메이션 ... 614
   부록 2장 브레즌햄(Bressenham) ... 820
   부록 3장 배열과의 이혼 : 링크리스트(Linked_List) ... 832
   부록 4장 팔레트 스크롤(palette Scroll) ... 844
   부록 5장 Double Buffering ... 855
   부록 6장 Stack ... 872
   부록 7장 참조표(Look-Up Table) ... 880
   부록 8장 몬테카를로 ... 886
   부록 9장 클래스와 클래스의 계층을 설계하는 방법 ... 893
   부록 10장 표준 템플릿 라이브러리(STL : standard template library) ... 901
닫기