목차
1부 C++를 배우기 위한 준비과정
   1장 C++ 학습을 위한 준비 ... 14
      C와 C++의 차이점 ... 14
        구조적 프로그램 ... 14
        객체 지향 프로그램 ... 15
      객체 지향 프로그래밍의 특징 ... 15
        캡슐화와 데이터 은닉 ... 16
        다형성, 함수의 오버로딩 ... 16
        상속성 ... 17
      C++ 컴파일러 설치와 사용법 ... 17
        [따라하기] 컴파일러(Visual C++ 2005 익스프레스) 설치하기 ... 17
        [따라하기] 컴파일러(Visual C++ 2005 익스프레스) 사용하기 ... 20
        [따라하기] Visual C++ 2005 익스프레스에서 파일 열기 ... 22
        [따라하기] Visual C++ 6.0 컴파일러 사용하기 ... 22
      C++ 프로그램 구조 파악하기 ... 24
        [예제] Hello World! 출력하기 ... 25
      C++ 콘솔 입출력 ... 26
        cout을 활용한 출력 ... 26
        [예제] 《 연산자를 이용한 출력 ... 27
        출력 포맷 지정하기 ... 28
        [예제] 진법 변환하기 위한 스트림 조작기 ... 29
        [예제] 자릿수 지정하기 위한 스트림 조작기 ... 29
        cout의 다양한 출력 함수 ... 29
        [예제] put 메소드로 문자 출력하기 ... 30
        [예제] write 메소드로 문자열 출력하기 ... 30
      cin을 활용한 입력 ... 30
        [예제] 》 연산자를 이용한 입력 ... 31
        cin의 다양한 입력 함수 ... 31
        [예제] get 메소드로 [Ctrl]+[z]전까지 입력된 문자 개수 구하기 ... 32
        [예제] get 메소드로 문자열 읽기 ... 32
        [예제] getline 메소드로 엔터가 눌리기 전까지 문자열을 읽기 ... 33
      구조체 ... 33
        [예제] 시간을 저장하는 구조체 만들기 ... 35
        구조체 변수의 초기화 ... 35
        구조체 포인터 ... 36
        [예제] 구조체 포인터 사용하기 ... 37
        [예제] time 구조체를 동적으로 생성한 후 출력하기 ... 38
      구조체를 매개변수로 갖는 함수 ... 39
        구조체 단위로 데이터 저장 ... 39
        [예제] 구조체에서 레코드 단위로 데이터 값 대입하기 ... 40
        [예제] time 구조체 변수를 시, 분, 초로 출력하는 함수 ... 40
        구조체를 인수로 갖는 주소 전달 방식 함수 ... 42
        [예제] 시간을 정형화하는 함수 정의 ... 43
        [예제] 두 time 구조체 변수의 합을 구하는 함수 ... 44
      레퍼런스 변수 ... 46
        [예제] 레퍼런스 변수선언 및 사용 ... 46
        레퍼런스 변수 전달 방식 ... 48
        [예제] 레퍼런스 변수 전달 방식 ... 48
        구조체에 레퍼런스 변수 적용 ... 49
        [예제] 시, 분, 초를 정형화하는 구조체 함수를 레퍼런스 전달 방식으로 정의하기 ... 50
2부 클래스 기본 다루기
   2장 클래스와 객체 ... 58
      클래스 설계 ... 58
        클래스 정의 방법 ... 59
        액세스 지정자 ... 59
        멤버변수 접근하기 위한 멤버함수 정의 ... 60
        객체 생성과 멤버함수 호출 ... 61
        [예제] 클래스 설계와 객체 생성 후 사용 ... 62
      클래스 내부에 멤버함수 정의하기 ... 63
        인라인 함수 ... 63
        자동인라인 ... 65
        [예제] 인라인 함수 정의 ... 65
      const 예약어와 const 멤버함수 ... 66
        const 예약어 ... 66
        [예제] const 변수 만들기 ... 67
        const 멤버함수 ... 68
        [예제] const 멤버함수 ... 68
      함수의 오버로딩 ... 69
        절대값 구하기 ... 70
        [예제] 함수의 오버로딩(전달인자의 자료형이 다름) ... 71
        [예제] 함수의 오버로딩(전달인자의 개수가 다름) ... 72
        함수의 디폴트 매개변수 값 ... 73
        [예제] 디폴트 매개변수를 갖는 함수 ... 75
        함수의 오버로딩과 모호성 ... 76
        [예제] 모호성 ... 76
      생성자 ... 77
        구조체의 초기화 ... 77
        [예제] 구조체 초기화하기 ... 77
        [예제] 구조체를 클래스로 변경하기 ... 78
        [예제] 멤버변수를 public으로 변경하기 ... 79
        [예제] Point 클래스의 전달인자 두 개를 갖는 생성자 ... 81
        [예제] Point 클래스의 디폴트 생성자 ... 84
        생성자의 콜론 초기화 ... 85
        [예제] 콜론 초기화와 소멸자 정의하기 ... 86
   3장 객체의 다양한 활용 ... 93
      객체 배열 ... 93
        [예제] 객체배열을 선언하고 첨자로 접근하기 ... 94
      객체 포인터의 사용 ... 95
        [예제] Point 클래스로 객체 포인터 선언하기 ... 96
new와 delete 사용하여 객체 생성 및 소멸 ... 97
        [예제] 동적 메모리 할당의 의미를 설명하기 위한 예 (컴파일 에러 발생하는 예제) ... 97
        [예제] 동적 메모리 할당의 예 ... 99
        힙 영역에 객체 만들기 ... 100
        [예제] Point 클래스로 동적 메모리 할당하여 객체 생성하기 ... 100
        객체 포인터 배열 ... 101
        [예제] 객체 포인터 배열 선언한 후 new로 객체 생성하기 ... 102
      this 포인터 ... 103
        [예제] 객체 포인터 this ... 105
        [예제] 객체 포인터 this를 프로그래머가 명시적으로 기술한 예 ... 107
      전달인자로 객체를 사용하는 함수 ... 108
        객체에 대한 값 전달 방식 ... 109
        [예제] 객체의 치환 ... 109
        [예제] 객체에 대한 값 전달 방식(Call By Value)의 함수 정의 ... 110
        객체를 함수의 결과값으로 사용하기 ... 110
        [예제] 객체를 함수의 결과값으로 사용하기 ... 110
        객체에 대한 레퍼런스 전달방식 ... 112
        [예제] 객체의 레퍼런스 전달 방식의 함수 ... 115
        [예제] 객체에 대한 레퍼런스 전달 방식으로 객체 복사하는 함수 만들기 ... 117
        [예제] 객체에 대한 레퍼런스의 반환 ... 118
      정적 멤버변수와 정적 멤버함수 ... 119
static ... 119
        [예제] 자동변수와 정적변수의 차이점 ... 120
        정적 멤버변수 ... 122
        [예제] Woori 클래스의 인원수를 세는 변수를 static으로 선언 ... 123
        정적 멤버함수 ... 124
        [예제] 등록된 친구수를 알려주는 정적 멤버 함수 ... 125
   4장 연산자 오버로딩 ... 132
      두 객체에 대한 합을 구하는 함수 ... 132
        [예제] 두 객체에 대한 합을 구하는 함수 정의하기 ... 134
      객체 자신의 값을 증가시키는 함수 ... 135
        [예제] 객체 자신의 값을 증가시키는 함수 정의하기 ... 137
      연산자 오버로딩 ... 138
        + 연산자 오버로딩 ... 138
        [예제] + 연산자 오버로딩 ... 139
        관계 연산자의 오버로딩 ... 140
        [예제] Point 클래스에 대소 관계 비교하는 연산자 오버로딩 ... 141
      단항 연산자 오버로딩 ... 142
        ++ 연산자의 오버로딩 ... 142
        [예제] Point 클래스에 ++ 연산자 오버로딩 ... 143
        [예제] Point 클래스에 후행처리하는 ++ 연산자 오버로딩 ... 145
      형 변환 연산자 오버로딩 ... 146
        [예제] int형 변환 연산자 오버로딩 ... 148
      프렌드 함수 ... 149
        [예제] 프렌드 함수 정의하기 ... 150
        연산자 오버로딩 ... 152
        [예제] 연산자 오버로딩 ... 153
      C++ 콘솔 출력 ... 154
        [예제] 《 연산자를 이용하여 Point 객체 출력 ... 158
      C++ 콘솔 입력 ... 159
        [예제] 》 연산자를 이용하여 Point 객체 입력 ... 160
3부 추상화한 자료구조
   5장 배열 클래스 ... 170
      클래스 내에서 메모리 동적 할당 ... 170
        [예제] 배열 클래스 정의 ... 170
      복사 생성자 ... 172
        디폴트 복사 생성자와 얕은 복사 ... 172
        복사 생성자의 오버로딩과 깊은 복사 ... 173
        [예제] 깊은 복사를 위한 복사 생성자 정의 ... 175
      대입 연산자 오버로딩 ... 177
        [예제] 대입 연산자 재 정의하기 ... 179
        출력 담당 연산자 《의 오버로딩 ... 181
        [예제] 출력담당 연산자 오버로딩 ... 182
      배열 인덱스 [] 연산자 오버로딩 ... 183
        [예제] 원소를 개별적으로 접근하기위한 [] 연산자 오버로딩 ... 184
   6장 스택 추상 클래스 ... 186
      스택 클래스에 대한 설계 ... 186
        스택의 알고리즘 ... 187
        생성자 구현 ... 188
        Push() 함수 구현 ... 188
        Pop() 함수 구현 ... 189
        [예제] 스택 클래스 정의 및 사용 ... 190
      스택 클래스 업그레이드 ... 192
        [예제] 업그레이드 된 스택 ... 193
      스택 클래스에 복사 생성자와 대입 연산자 오버로딩 ... 194
        [예제] 대입연산자 추가하기 ... 194
4부 상속성
   7장 상속성 ... 202
      상속성이란 ... 202
        상속 관계의 클래스 정의 ... 203
        [예제] 파생 클래스 정의와 상속받은 멤버함수 사용 ... 204
protected 멤버의 사용 ... 205
        [예제] 상속 관계에서 멤버 사용 권한 ... 205
        [예제] 파생(derived) 클래스 사용하기 ... 207
        생성자와 상속성 ... 209
        [예제] 상속 관계에서 생성자 호출 순서 ... 209
        상속관계에서의 생성자 문제 ... 212
        [예제] 상속 관계에서 생성자를 연속 호출함으로서 발생하는 문제 ... 213
        상속관계에서의 생성자 문제 해결책 ... 214
        [예제] 상속 관계에서 기반 클래스의 생성자를 명시적으로 호출 ... 215
        멤버함수의 오버라이딩 ... 217
        [예제] 오바라이딩된 함수의 은닉 ... 218
        은닉된 함수 호출 ... 218
        [예제] 오바라이딩되어 은닉된 함수 호출하기 ... 219
        최종 예제 ... 219
        [예제] 2차원 평면의 좌표를 다루는 Point 클래스와 3차원 공간 좌표를 다루는 Point3D 클래스 설계 ... 220
   8장 가상함수와 추상 클래스 ... 229
      UpCasting과 DownCasting ... 229
        UpCasting ... 230
        [예제] 객체 포인터로 멤버함수 접근하기 ... 231
      정적 바인딩과 동적 바인딩 ... 232
      virtual 키워드를 사용한 가상함수 ... 233
        [예제] 가상함수의 사용 ... 234
      완전 가상함수와 추상 클래스 ... 235
        [예제] 완전 가상함수와 추상 클래스 ... 236
        추상클래스와 다형성 ... 237
        [예제] 추상클래스와 상속을 받는 파생클래스 ... 238
      가상 소멸자 ... 240
        [예제] 일반 쿉
닫기