Day 1. C++ 언어의 개요 ... 20 STEP 1. C++ 언어의 개념 ... 20 STEP 2. 프로그램 작성 과정 ... 21 STEP 3. C++ 프로그램의 기본구조 ... 22 main() 함수 ... 22 그룹화 괄호 {} ... 23 주석문(comment) ... 23 include〈iostream.h〉 ... 24 cout 객체 ... 25 명령문과 세미콜론 ... 25 STEP 4. C++ 컴파일러의 사용법 ... 26 연습문제 ... 32 Day 2. C++ 언어의 자료형 ... 34 STEP 1. 자료형의 개념 ... 34 STEP 2. 상수와 변수의 개념 ... 35 상수(constant)의 종류 ... 36 확장 특수 출력 문자(escape sequence) ... 39 변수(variable) ... 40 STEP 3. 정수형 ... 41 STEP 4. 실수형 ... 44 STEP 5. 문자형 ... 48 연습문제 ... 51 Day 3. C++ 언어의 연산자 ... 52 STEP 1. 연산자의 개념 ... 52 STEP 2. 산술 연산자 ... 52 STEP 3. 관계 연산자 ... 53 STEP 4. 조건 연산자 ... 55 STEP 5. 논리 연산자 ... 57 STEP 6. 증감 연산자 ... 60 선행처리, 후행처리 ... 60 STEP 7. 대입 연산자 ... 62 STEP 8. sizeof 연산자 ... 63 STEP 9. 형변환(캐스트) 연산자 ... 64 STEP 10. 비트 연산자 ... 67 비트 단위 쉬프트 연산자 ... 71 STEP 11. 연산자 우선 순위와 결합 방향 ... 73 연습문제 ... 75 Day 4. C++ 언어의 제어문 ... 76 STEP 1. 제어문의 개요 ... 76 STEP 2. if 문 ... 77 if else 문 ... 80 다중 if else 문 ... 81 STEP 3. switch case 문 ... 82 STEP 4. for 문 ... 85 다중 for ... 88 STEP 5. while 문 ... 92 난수를 발생하는 함수 random() ... 93 cin의 삽입 연산자(〈〈)를 이용한 정수값을 입력받기 ... 97 cin의 삽입 연산자(〈〈)를 이용하여 문자열을 입력받기 ... 98 cin.get을 이용한 입력 ... 99 STEP 6. do while 문 ... 100 while 문을 for 문 처럼 사용한 반복문 ... 101 STEP 7. 보조 제어문 ... 102 continue 문 ... 102 break 문 ... 103 goto 문 ... 104 연습문제 ... 107 Day 5. C++ 언어의 함수 기본편 ... 110 STEP 1. 함수의 개요 ... 110 STEP 2. 함수의 사용 ... 112 인수가 없는 함수 ... 112 인수가 있는 함수 ... 114 return 값이 있는 함수 ... 117 STEP 3. 함수의 프로토타입(원형 정의 또는 선언) ... 120 STEP 4. 함수의 오버로딩(Function Overloading) ... 122 STEP 5. 함수의 디폴트 인수(Default Parameter) ... 124 STEP 6. 선행처리기 ... 127 매크로 상수 ... 128 const상수 ... 130 매크로 함수 ... 131 인라인(inline) 함수 ... 136 include ... 137 연습문제 ... 140 Day 6. C++ 언어의 심화편 ... 142 STEP 1. 인수 전달 방법 - Call By Value ... 142 치환하는 알고리즘 ... 143 치환 함수 만들기 ... 145 STEP 2. 포인터 개념 ... 147 메모리 ... 147 주소 연산자(&) ... 147 포인터 변수 ... 149 포인터를 사용한 간접 지정 ... 151 STEP 3. 인수 전달 방법 - Call By Address ... 153 Call By Address의 또 다른 용도 ... 155 STEP 4. 프로그램 작성 과정 ... 157 STEP 5. 인수 전달 방법 - Call By Reference ... 158 STEP 6. 기억 클래스 ... 162 자동변수(auto) ... 163 외부변수(extern) ... 165 지역변수로서의 정적변수(static) ... 168 전역변수로서의 정적변수(static) ... 170 레지스터 변수(register) ... 176 연습문제 ... 177 Day 7. C++ 언어의 배열 ... 178 STEP 1. 배열의 선언 ... 178 배열의 원소(Array Element) ... 179 배열을 for 문과 함께 사용하기 ... 182 STEP 2. 배열의 사용 예 ... 184 배열을 사용하여 총합과 평균 구하기 ... 184 배열을 사용하여 최대값 구하기 ... 185 배열을 사용하여 정렬하기 ... 187 STEP 3. 1차원 배열과 포인터 ... 193 배열의 이름은 포인터 ... 196 STEP 4. 포인터 연산 ... 198 STEP 5. 함수의 전달인자로 배열 사용하기 ... 201 STEP 6. 포인터 변수 선언 시 자료형의 의미 ... 208 연습문제 ... 211 Day 8. C++ 언어의 2차원 배열 ... 212 STEP 1. 2차원 배열 ... 212 2차원 배열의 선언방식 ... 212 2차원 배열의 초기화 ... 214 2차원 배열과 이중 for 문 ... 214 STEP 2. 2차원 배열의 사용 예 ... 216 두 행렬의 합을 구하기 ... 216 세 행렬을 나란히 같은 줄에 출력하기 ... 218 2차원 배열을 사용하여 총합과 평균 구하기 ... 220 STEP 3. 2차원 배열의 주소값 ... 224 STEP 4. 2차원 포인터 ... 231 STEP 5. 2차원 배열과 2차원 포인터 ... 234 STEP 6. 함수의 전달인자로 2차원 배열을 설정하기 ... 240 함수의 전달인자로 2차원 배열을 사용하기 ... 242 연습문제 ... 247 Day 9. 문자열 다루기 ... 248 STEP 1. 문자열(string) 배열의 선언 ... 248 STEP 2. 문자열(string) 배열의 사용예 ... 253 문자열의 길이 구하는 함수 strlen ... 253 문자열의 길이 구하는 사용자 정의 함수 만들기 ... 256 문자열을 복사하는 함수 strcpy ... 260 문자열을 복사하는 사용자 정의 함수 만들기 ... 265 문자열의 크기를 비교하는 strcmp 함수 ... 268 연습문제 ... 272 Day 10. 문자열 다루기 2 ... 274 STEP 1. 문자열 2차원 배열 ... 274 STEP 2. 문자열 포인터 배열 ... 276 STEP 3. 가장 큰 문자열 구하기 ... 280 STEP 4. 문자열 정렬하기 ... 283 STEP 5. 포인터 배열을 사용하여 문자열 정렬하기 ... 288 STEP 6. 포인터 변수에 키보드에서 입력된 문자열 저장하기 ... 292 메모리 할당 함수(malloc) ... 294 메모리 해제 함수(free) ... 299 연습문제 ... 303 Day 11. 구조체 다루기 ... 304 STEP 1. 구조체 선언과 사용법 ... 304 구조체의 개념 ... 304 구조체를 사용하는 이유 ... 305 구조체 선언 방식 ... 306 구조체 변수 선언 ... 307 구조체 사용하기 ... 308 STEP 2. 구조체 변수의 초기화 ... 310 STEP 3. 구조체를 전달인자로 하는 함수 ... 313 구조체 단위로 값을 대입하기 ... 313 구조체를 전달인자로 사용하기(Call By Value) ... 315 리턴값이 구조체인 함수 ... 317 연습문제 ... 323 Day 12. 구조체 포인터와 배열 ... 324 STEP 1. 구조체 포인터 ... 324 STEP 2. 함수의 전달인자로 구조체 포인터 사용하기(Call By Address) ... 329 STEP 3. 함수의 전달인자로 레퍼런스 변수 사용하기(Call By Reference) ... 333 STEP 4. 구조체 배열 ... 336 STEP 5. 구조체 배열과 포인터 ... 339 STEP 6. 함수의 전달인자로 구조체 배열 사용하기 ... 343 연습문제 ... 346 Day 13. 클래스와 객체 ... 348 STEP 1. 객체지향 프로그래밍 ... 348 STEP 2. OOP(Object Oriented Programming)의 특징 ... 349 OOP의 특징 ... 349 STEP 3. 클래스의 선언(멤버 변수/멤버 함수) ... 351 액세스 지정자 ... 352 클래스의 멤버 함수 구현 ... 353 STEP 4. 객체 선언/멤버 참조 ... 355 클래스와 객체 ... 355 클래스 멤버의 접근 방법 ... 357 클래스 내부에 멤버 함수 정의 ... 359 STEP 5. 클래스의 액세스 지정자 - private/public ... 361 연습문제 ... 366 Day 14. 생성자와 소멸자 ... 368 STEP 1. 초기화의 개념 ... 368 STEP 2. 객체의 초기화 ... 369 멤버변수를 public으로 변경하여 초기화하기 ... 370 STEP 3. 함수로 객체를 초기화하기 ... 371 생성자란? ... 371 STEP 4. 디폴트 생성자(Default Constructor) ... 372 STEP 5. 전달인자를 갖는 생성자 ... 374 STEP 6. 생성자의 오버로딩 ... 376 STEP 7. 생성자의 디폴트 값 ... 378 STEP 8. 생성자의 콜론 초기화 ... 381 STEP 9. 소멸자(Destructor) ... 383 연습문제 ... 386 Day 15. 동적 메모리 할당과 소멸자 ... 388 STEP 1. 스택과 힙 영역 ... 388 STEP 2. 힙 영역에 배열 선언하기 ... 390 힙 영역의 메모리 해제하기 ... 393 STEP 3. 클래스 내에서 메모리 동적 할당 ... 395 STEP 4. 복사 생성자(Copy Constructor) ... 400 연습문제 ... 409 Day 16. 추상적인 데이터(스택) ... 410 STEP 1. 스택 ... 410 STEP 2. 스택의 알고리즘 ... 412 생성자 구현하기 ... 413 push() 함수 구현하기 ... 414 pop() 함수 구현하기 ... 415 STEP 3. 동적 메모리 할당으로 스택 구현하기 ... 417 연습문제 ... 425 Day 17. 객체 포인터와 this ... 426 STEP 1. 객체 포인터 선언 ... 426 STEP 2. 객체내의 멤버변수와 멤버 함수의 구조 ... 429 STEP 3. 내부 포인터 this 란 ... 432 연습문제 ... 437 Day 18. 객체 배열 ... 438 STEP 1. 객체 배열의 선언과 사용하기 ... 438 STEP 2. 객체 배열과 포인터 ... 441 STEP 3. 함수의 전달인자로 객체 배열 사용하기 ... 444 STEP 4. 프랜드(friend) 함수 ... 446 연습문제 ... 450 Day 19. 정적(static )멤버변수와 프랜드(friend) 함수 ... 452 STEP 1. 정적 멤버변수(Static Member Variable)란? ... 452 STEP 2. 일반 멤버변수의 문제점 ... 453 STEP 3. 전역변수의 문제점 ... 456 STEP 4. 정적 멤버변수 ... 458 STEP 5. 정적 멤버변수의 접근을 위한 정적 멤버 함수(Static Member Function) ... 461 연습문제 ... 465 Day 20. 객체가 전달인자인 함수 ... 466 STEP 1. 멤버 함수로 두 객체의 합 구하기 ... 466 STEP 2. 프랜드 함수로 두 객체의 합 구하기 ... 469 STEP 3. 멤버 함수로 1증가하는 함수 구현하기 ... 472 STEP 4. 프랜드 함수로 1증가하는 함수 구현하기 ... 475 연습문제 ... 480 Day 21. 연산자 오버로딩 ... 482 STEP 1. 연산자 오버로딩이란 ... 482 STEP 2. 이항 연산자의 오버로딩 ... 484 멤버 함수로 연산자 이항 오버로딩하기 ... 484 프랜드 함수로 연산자 이항 오버로딩하기 ... 488 STEP 3. 연산자의 오버로딩시 주의할 점 ... 490 STEP 4. 단항 연산자의 오버로딩 ... 492 연습문제 ... 499 Day 22. 기타 연산자 오버로딩 ... 500 STEP 1. ostream 객체 ... 500 STEP 2. 출력을 담당하는 삽입 연산자 '〈〈' ... 503 STEP 3. 프랜드 함수로 삽입 연산자 '〈〈' 정의하기 ... 505 삽입 연산자 '〈〈'을 발전시키기 ... 509 연습문제 ... 516 Day 23. String 클래스 ... 518 STEP 1. 문자열형 이해하기 ... 518 STEP 2. 문자열 클래스 설계하기 ... 519 STEP 3. 문자열 클래스(String Class) ... 520 STEP 4. 문자열 클래스(String Class)를 발전시키기 ... 527 Day 24. 상속 ... 534 STEP 1. 상속이란 ... 534 STEP 2. 기반 클래스와 파생 클래스 만들기 ... 535 기반 클래스 만들기 ... 536 파생 클래스 만들기 ... 537 STEP 3. 기반 클래스에 생성자 정의하기 ... 541 STEP 4. 기반 클래스의 생성자에 전달인자 보내기 ... 543 파생 클래스에서 기반 클래스의 생성자 명시적으로 호출하기 ... 546 생성자, 소멸자 호출의 순서 ... 546 기반 클래스의 생성자에 인수 전달하기 ... 548 연습문제 ... 553 Day 25. 가상 함수 ... 556 STEP 1. 함수의 재생(Overriding Function) ... 556 STEP 2. 기반 클래스 멤버 함수의 은폐(hidding) ... 560 STEP 3. 포인터 변수로 멤버 함수 호출하기 ... 563 STEP 4. 기반 클래스의 포인터에 파생 클래스의 주소 값 대입 ... 566 STEP 5. 정적 바인딩과 동적 바인딩 ... 572 STEP 6. 동적 바인딩과 가상 함수 ... 575 STEP 7. 가상 함수의 동작 원리 ... 578 STEP 8. 완전 가상 함수와 추상 클래스 ... 581 추상 클래스 ... 582 연습문제 ... 584 Day 26. 입출력 스트림 ... 586 STEP 1. C++의 입력과 출력(I/O) ... 586 STEP 2. cout 객체가 제공하는 출력방법 ... 587 STEP 3. cin 객체가 제공하는 입력방법 ... 591 연습문제 ... 599 Day 27. 파일 출력 - 기본편 ... 600 STEP 1. 파일 입출력을 위한 개념 접근 ... 600 STEP 2. 파일 출력의 간단한 예 ... 601 STEP 3. 파일 입력의 간단한 예 ... 604 문자 한 개를 get() 함수로 입력받아 파일에 출력하기 ... 608 입출력 파일의 상태를 알려주는 함수 ... 611 명령형 라인에서 문자열 입력받기 ... 612 도스의 type 명령어 만들기 ... 614 연습문제 ... 617 Day 28. 파일 출력 - 심화편 ... 618 STEP 1. 이진 파일과 텍스트 파일 ... 618 STEP 2. 이진 파일로 저장하기 ... 619 파일 모드 ... 621 다양한 형태로 파일 열기 ... 622 STEP 3. 이진 파일로 읽어오기 ... 625 STEP 4. 순차 파일 ... 627 STEP 5. 랜덤 파일 ... 629 STEP 6. 파일 입출력 연산자 오버로딩 ... 632 연습문제 ... 637 Day 29. 템플릿 ... 638 STEP 1. 템플릿 ... 638 STEP 2. 함수의 오버로딩과 템플릿 ... 638 템플릿 함수 만들기 ... 640 STEP 3. 템플릿 클래스 ... 641 Day 30. MFC를 이용한 윈도 프로그래밍 ... 646 STEP 1. 비주얼 C++ 특징 ... 646 MFC 프로그래밍의 이점 ... 646 MFC 프로그래밍의 일반적인 작성 단계 ... 647 STEP 2. 프로젝트 단위로 프로그램 작성하기 ... 649 클래스명과 파일명 리스트 ... 655 STEP 3. 실행 파일 작성하기 ... 655 STEP 4. 프로젝트 단위로 파일 저장 및 열기 ... 657 STEP 5. WorkSpace(워크스페이스) 창과 Code(코드) 창 ... 658 WorkSpace(워크스페이스) 창 ... 658 Code(코드) 창 ... 660 STEP 6. MFC 애플리케이션의 구성 ... 664 CWinApp(애플리케이션 클래스) ... 665 도큐먼트와 뷰의 구조 ... 666 CDocument 클래스 ... 666 CView::GetDocument() 멤버 함수 ... 666 STEP 7. ClassWizard와 메시지 핸들러(MessageHandler) ... 668 ClassWizard ... 668 WM_SIZE 윈도 메시지 ... 668 STEP 8. MFC 프로그램 발전하기 ... 668 CView 클래스 ... 668 OnDraw() 함수 ... 669 CDC 클래스 ... 669 pDC→TextOut(0,0,'This is Visual C++ Program') 함수 ... 669 부록 1. 〈연습 문제 풀이〉정답 ... 676 부록 2. Turbo C++ 3.0 설치방법 ... 737 부록 3. ASCII 코드표 ... 741 찾아보기 ... 745