책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > C++
· ISBN : 9788956741604
· 쪽수 : 929쪽
· 출판일 : 2004-01-30
책 소개
목차
1일째 C++ 프로그래밍의 시작
간단한 C++의 역사
프로그램이란 무엇인가?
문제 해결 방식
순차적 프로그래밍, 구조적 프로그래밍, 객체 지향 프로그래밍
C++와 객체 지향 프로그래밍
C++는 어떻게 진화되어 왔는가?
ANSI 표준
프로그램 준비
개발자의 개발 환경
원시 코드 컴파일하기
링커를 가지고 실행 가능한 파일 만들기
개발 주기
HELLO.cpp - 첫 번째 C++ 프로그램 작성
컴파일 오류들
요약
Q/A
실습해보기
퀴즈
연습 문제
2일째 C++ 프로그램의 각 부분들
간단한 프로그램의 각 부분들
간단히 살펴보는 cout
주석문(Comments)
주석문의 형태
주석문 쓰기
각 파일의 처음에 필요한 주석들
주석에 관한 마지막 주의 사항
함수
함수 사용법
요약
Q/A
실습해보기
퀴즈
연습 문제
3일째 변수와 상수
변수(Variable)란 무엇인가?
메모리 할당하기
정수(Integer)의 크기
Signed와 Unsigned
기본적인 변수형
변수 정의하기
대?소문자의 구별
예약어(Keyword)
한꺼번에 같은 형 변수를 하나 이상 만들 때
변수에 값 대입하는 법
typedef
언제 short을 쓰고 언제 long을 쓰는가?
unsigned 정수형에서의 올림 초기화
signed 정수에서의 올림 초기화
문자(Character)
문자와 숫자
특수 출력 문자
상수(Constant)
문자 상수(literal constant)
기호 상수(symbolic constant)
상수 나열형
요약
Q/A
실습해보기
퀴즈
연습 문제
4일째 수식과 문장
문장(Statement)
공백 문자(Whitespace)
블록문과 복합문
수식문(Expression)
연산자(Operator)
대입 연산자(assignment operator)
수학 연산자(mathematical operator)
정수 나눗셈과 나머지 연산
대입 연산자와 수학 연산자의 혼용
증가 연산자와 감소 연산자
전치(Prefix) 연산자와 후치(Postfix) 연산자
연산자 우선순위(Precedence)
중첩 괄호(Nesting Parentheses)
참값의 속성
관계 연산자(Relational Operator)
if 문장
들여쓰기(Indentation Style)
else
복합 if문
중첩 if문에서의 중괄호 사용
논리 연산자(Logical Operator)
논리곱(logical AND)
논리합(logical OR)
논리적 부정(logical NOT)
관계 연산자 우선순위
참과 거짓에 대한 몇 가지 사항들
조건(삼항) 연산자
요약
Q/A
실습해보기
퀴즈
연습 문제
5일째 함수
함수(function)란 무엇인가?
함수 선언(Declaring)과 함수 정의(Definition)
함수 선언
함수 원형(Function Prototype)
함수 정의(Defining the Function)
함수 실행
지역 변수(Local Variable)
전역 변수(Global Variable)
전역 변수 - 주의해야 할 단어
지역 변수에 대한 추가 사항
함수문(Function Statement)
함수 인자(Function Argument)
함수의 매개변수로 함수를 사용하는 함수
매개변수는 지역 변수
반환값(Return Value)
기본 매개변수(Default Parameter)
함수 중첩(Overloading Function)
함수에 관한 특별한 주제들
확장(inline) 함수
자기 호출(Recursion)
함수는 어떻게 동작되는가?
추상화 단계
RAM 나누기
스택과 함수
요약
Q/A
실습해보기
퀴즈
연습 문제
6일째 기본적인 클래스
새로운 형(New Type) 만들기
왜 새로운 형을 만드는가?
클래스와 멤버(Class and Member)
클래스의 선언(Declaring a Class)
이름짓는 법
객체 정의(Defining an Object)
클래스와 객체
클래스 멤버에의 접근
클래스에 대입하지 말고 객체에 대입하기
선언을 하지 않으면 클래스는 이를 가질 수 없다
전용(private)과 범용(public)
멤버 자료를 전용으로 만들기
전용성과 보안성에 대하여
클래스 메쏘드 구현
생성자와 소멸자
기본 생성자와 기본 소멸자
const 멤버 함수
인터페이스와 구현
클래스 선언과 메쏘드 정의를 어디에서 할 것인가?
inline 구현
다른 클래스를 멤버 자료로 갖는 클래스
구조체(Structure)
왜 두 개의 예약어는 같은 일을 할까?
요약
Q/A
실습해보기
퀴즈
연습 문제
7일째 프로그램의 흐름
순환문(Looping)
순환문의 조상: goto
왜 goto문이 기피되는가?
while 순환문
다소 복잡해진 while문
continue와 break
while(1) 순환문
do...while 순환문
do...while
for 순환문
for 순환문의 고급 사용
빈 for 순환문
중첩된 순환문
for 순환문에서의 범위 규칙
순환문 요약
switch문
메뉴 구성 프로그램에서 switch문 쓰기
요약
Q/A
실습해보기
퀴즈
연습 문제
8일째 포인터
포인터란 무엇인가?
포인터에 주소를 저장
포인터 이름
간접 지정 연산자
포인터, 주소, 변수
포인터를 사용한 자료 연산
주소 관찰
도대체 왜 포인터를 쓰는가?
스택과 자유 기억 공간(Free Store, 힙(Heap))
new
delete
메모리 누출(Memory Leak)
자유 기억 장소에 객체 만들기
객체 delete
자료 멤버(Data Member)에 접근
자유 기억 공간의 멤버 자료에 대해
this라는 포인터
실종된 포인터
const 포인터
const 포인터와 const 멤버 함수
const this 포인터
요약
Q/A
실습해보기
퀴즈
연습 문제
9일째 참조자
참조자(reference)란 무엇인가?
참조자에 주소 연산자 ‘&’ 사용하기
무엇이 참조될 수 있는가?
널 포인터와 널 참조자
함수 인수(Argument)를 참조자로 전달하기
포인터를 이용한 swap()의 구현
참조자를 이용한 swap()의 구현
함수 표제(Header)와 함수 원형(Prototype)에 대한 이해
여러 개의 값을 반환하는 법
참조자를 사용한 값 반환
효율성(Efficiency)을 위해 참조자를 전달하자
상수 포인터(const Pointer) 전달하기
그 대안으로써 참조자를 사용하자
참조자와 포인터를 사용하는 때
참조자와 포인터를 섞어서 쓸 때
범위 벗어난 객체에 대한 참조자를 반환하면 안 된다
힙에 있는 객체에 대한 참조자 반환하기
포인터, 도대체 누가 포인터를 가지고 있는가?
요약
Q/A
실습해보기
퀴즈
연습 문제
10일째 고급 함수들
멤버 함수 중첩(Overload)
기본값(Default Value) 쓰기
기본값과 중첩 함수 중 어떤 것을 선택할 것인가?
기본 생성자(Default Constructor)
생성자 중첩
객체 초기화
복사 생성자(Copy Constructor)
연산자 중첩
증가 함수(Increment Function) 만들기
전치(Prefix) 연산자 중첩시키기
중첩 연산자 함수에서의 반환값 형
이름 없는(Nameless) 임시 객체 반환
this 포인터 사용하기
후치(Postfix) 연산자 중첩시키기
전치와 후치 연산자 차이
덧셈 연산자
operator+ 중첩
연산자 중첩에서 몇 가지 중요 사항들
연산자 중첩에 있어서의 한계
무엇을 중첩시킬 것인가?
대입 연산자
변환 연산자
형 변환 연산자(Conversion Operator)
요약
Q/A
실습해보기
퀴즈
연습 문제
11일째 배열
배열(Array)이란 무엇인가?
배열 원소(Array Element)
배열의 끝을 지나 값을 저장할 경우
울타리 말뚝 오류
배열의 초기화
변수 선언
객체의 배열
다차원 배열(Multidimensional Array)
다차원 배열의 초기화
메모리에 관하여
포인터 배열(Array of Pointer)
자유 기억 공간에 배열 선언하기
배열을 가리키는 포인터와 포인터가 저장된 배열
포인터와 배열명
자유 기억 공간의 배열 지우기
char 배열(문자 배열)
strcpy()와 strncpy()
문자열 클래스(String Class)
연결 리스트와 다른 구조체들
클래스 배열(Array Class)
요약
Q/A
실습해보기
퀴즈
연습 문제
12일째 상속
상속(inheritance)이란 무엇인가?
상속(Inheritance)과 파생(Derivation)
동물의 왕국
파생 구문
전용(private)과 보호(protected)
생성자와 소멸자
기본 생성자에게 인수 전달하기
함수 재생(Overriding Function)
중첩(overloading)과 재생(overriding)
기본 클래스 메쏘드의 은폐
기본 메쏘드 호출
가상 메쏘드(Virtual Method)
가상 함수는 어떻게 동작하는가?
없는 것을 얻을 수는 없다
분할하기
가상 소멸자(Virtual Destructor)
가상 복사 생성자(Virtual Copy Constructor)
가상 메쏘드를 사용하는 대가
요약
Q/A
실습해보기
퀴즈
연습 문제
13일째 다형성
단항 상속성(Single Inheritance)의 문제점
상승(Percolating Upward)
형 변환 하향(Casting Down)
두 개의 목록(List)에 넣기
다중 상속(Multiple Inheritance)
다중 상속 객체의 각 부분들
다중 상속된 객체에서의 생성자
모호성 해결(Ambiguity Resolution)
공유된 기본 클래스(Shared Base Class)로부터 상속
가상 상속(Virtual Inheritance)
다중 상속의 문제점들
혼합(Mixin) 그리고 만능 클래스
추상 자료형(Abstract Data Type)
순수 가상 함수(Pure Virtual Function)
순수 가상 함수의 구현
추상의 복합 계층(Complex Hierarchies of Abstraction)
어떤 형이 추상인가?
Q/A
실습해보기
퀴즈
연습 문제
14일째 특수 클래스와 함수들
정적 멤버 자료(Static Member Data)
정적 멤버 함수(Static Member Function)
함수를 가리키는 포인터
함수 포인터를 사용하는 이유
함수 포인터 배열
함수 포인터를 다른 함수에 전달하는 방법
함수 포인터를 typedef로 선언하기
멤버 함수에 대한 포인터
멤버 함수 포인터에 대한 배열
요약
Q/A
실습해보기
퀴즈
연습 문제
15일째 고급 상속 기능
포함(Containment)
포함된 클래스의 멤버에 접근
포함된 멤버에 대한 접근 걸러내기(Filtering)
포함의 대가
값에 의한 복사
상속/포함, 대리(Delegation) 관점 구현
대리(Delegation)
전용 상속(Private Inheritance)
프랜드 클래스(Friend Class)
프랜드 함수(Friend Function)
프랜드 함수와 연산자 중첩(Operator Overloading)
삽입 연산자(Insertion Operator) 중첩
요약
Q/A
실습해보기
퀴즈
연습 문제
16일째 스트림
스트림(Stream)에 대한 개괄
캡슐화(Encapsulation)
버퍼화(Buffering)
스트림과 버퍼
표준 입출력 객체(Standard I/O Object)
재지정(redirection)
cin을 사용한 입력
문자열
문자열의 문제
istream 객체 참조자를 반환하는 연산자: >>
cin의 또 다른 멤버 함수
단일 문자 입력
표준 입력으로부터 문자열을 받아들이는 법
cin.ignore() 사용하기
peek()와 putback()
cout으로 출력
출력할 산출물을 방출함(flush)
관련된 함수들
조종자, 플래그, 규격 명령어
cout.width()를 사용하는 법
채울 문자의 설정
설정 플래그(Set Flag)
스트림과 printf() 함수
파일의 입력과 출력
ofstream
조건을 나타내는 상태
입출력을 위한 파일 열기
파일 열기에서 ofstream 객체의 기본 작동을 변화시키는 법
이진 파일과 텍스트 파일
명령어 줄 프로세싱(Command-Line Processing)
요약
Q/A
실습해보기
퀴즈
연습 문제
17일째 전처리계
전처리계와 컴파일러
중간 형태의 보기
#define 지시자 사용하기
#define 지시자를 사용한 상수 정의
검사용으로 #define 지시자 사용
#else 전처리계 지시자
포함(Inclusion) 및 포함 감시자(Inclusion Guard)
라인 명령어 환경에서 정의하는 방법
#undef 사용하기
조건부 컴파일
매크로 함수(Macro Function)
왜 괄호들이 필요한가?
매크로와 함수 및 템플릿
확장 함수(Inline Function)
문자열 연산(String Manipulation)
문자열 만들기
문자열 연결(Concatenation)
내장 매크로(Predefined Macro)
assert()
assert() 가지고 디버깅하기
assert()와 예외 사항들(Exceptions)
부작용(Side Effect)
클래스의 불변성(Invariants)
중간값(Interim Value) 출력
디버그 수준(Debug Level)
요약
Q/A
실습해보기
퀴즈
연습 문제
18일째 객체 지향 분석과 설계
개발 주기(Development Cycle)
경보 시스템 시뮬레이션
예비 설계
무엇이 객체인가?
다른 객체들
클래스란 무엇인가?
경보는 어떻게 보고되는가?
사건 순환문(Event Loop)
우편 시스템(PostMaster)
생각은 여러 번, 결정은 한번에
분열시킨 뒤 정복하라
메시지 규격화
초기 클래스 설계
순종 계층과 잡종 계층
인터페이스 설계
원형 만들기(Building a Prototype)
80/80의 법칙
PostMasterMessage 클래스 설계
응용 프로그램 인터페이스
대 그룹에서의 프로그래밍
설계에서 기타 고려 사항들
설계시 판단
판단, 판단
구동 프로그램(Driver Program)을 가지고 작업
요약
Q/A
실습해보기
퀴즈
연습 문제
19일째 템플릿
템플릿(Template)이란 무엇인가?
매개변수화된 형
템플릿 정의
이름을 사용하여
템플릿의 구현
템플릿 함수
템플릿과 프랜드
비 템플릿 프랜드 클래스와 함수
일반 템플릿 프랜드 클래스와 함수
형이 서술된 템플릿 프랜드 클래스와 함수
템플릿 항목 사용하기
특수 함수들
정적 멤버와 템플릿
요약
Q/A
실습해보기
퀴즈
연습 문제
20일째 예외 사항과 오류 처리
버그, 오류, 실수, 프로그램에 녹이 슬 때(Code Rot)
예외 사항(Exception)
‘녹슨 프로그램(Code Rot)’이라는 말에 대해
예외 사항(Exception)
예외 사항은 어떻게 사용되는가?
try 블록과 catch 블록의 사용
예외 사항 잡기(Catching Exception)
하나 이상의 catch문
예외 사항 계층 구조
예외 사항의 자료와 예외 사항 객체 작명법
예외 사항과 템플릿
오류가 없는 예외 사항
버그와 디버깅
분기점(Breakpoint)
경계점(Watch Point)
메모리 살펴보기
어셈블러
요약
Q/A
실습해보기
퀴즈
연습 문제
21일째 다음은 무엇을 할 것인가?
표준 라이브러리(Standard Library)
문자열(String) 라이브러리 함수
strcpy()와 strncpy()
strcat()과 strncat()
다른 문자열 함수들
시간과 날짜 관련 함수
stdlib
qsort()
다른 라이브러리 함수
비트 연산(Bit Twiddling)
비트 연산자 AND
비트 연산자 OR
배타적 비트 OR 연산자
보수(Complement) 연산자
비트 설정(Setting Bits)
비트 초기화
비트 바꾸기(Flipping Bits)
비트 필드(Bit field)
문체(Style)
들여쓰기(Indenting)
중괄호 정렬
긴 줄의 처리
switch문 정렬
프로그램 코드 텍스트
상술자 작명법
이름에 철자 붙이기와 대문자 붙이기
주석
접근(Access)
클래스 정의
include 파일
assert()
const
다음 단계
어디에서 도움과 충고를 구할 것인가?
요약
Q/A
실습해보기
퀴즈
연습 문제
부록 A 연산자 우선순위
부록 B C++ 예약어
부록 C 이진법과 16진법
부록 D 퀴즈, 연습 문제 해답