책 소개
C++는 1979년 Bjarne Stroustrup에 의해 “C with Classes”라는 이름으로 시작되었지만, 지금은 시스템 소프트웨어, 응용 소프트웨어, 게임, 임베디드 소프트웨어, 모바일 프로그램 등 소프트웨어의 전 분야에 활용되고 있다. C++는 Java나 C#에 비해 실행 속도가 빠르다고 알려져 있고, 메모리나 I/O 포트를 직접 접근하므로 하드웨어 제어에 강점을 가진다. 이처럼 C++는 광범위하면서도 파괴력 있는 언어이고, Java나 C# 등 현대적 객체 지향 언어를 낳게 한 모태 언어이므로, 소프트웨어 전문가로서 탄탄한 기반을 갖추기 위해서라면 C++ 언어에 대한 충실한 이해가 필요하다.
이 책의 특징
첫째, C++ 언어와 프로그래밍 기술을 쉽게 풀어서 설명하였고, 적절한 예제를 수록하였다.
둘째, 많은 그림과 삽화로 개념을 쉽게 이해하도록 하였다.
셋째, 각 절마다 Check Time 문제를 두어 배운 내용을 확인할 수 있도록 하였다.
넷째, 각 장마다 Open Challenge 문제를 두어 도전하는 과정을 두었다.
다섯째, 연습문제는 난이도와 함께 이론과 실습 문제로 구분하여 단계별로 학습할 수 있도록 하였다.
개정판에서 추가되거나 달라진 부분
1. 책 전반에 걸쳐 C++ 표준이 변화함에 따라 틀린 내용을 바로잡았다.
2. 연습문제를 추가하고 목적을 명시하여 독자들이 문제의 방향을 잡도록 하였다.
3. 3장에는 위임 생성자, 생성자와 멤버 변수 초기화 방법을 추가하였다.
4. 7장에는 연산자 작성을 추가하여 참조 리턴의 필요성을 깨닫도록 하였다.
5. 9장에는 함수 재정의와 오버라이딩이 잘 구분되도록 설명을 수정하고, override와 final 키워드에 관한 설명을 추가하였다.
6. 10장에는 4절에 map 컨테이너의 설명을 추가하고, 5절을 새로 추가하여 auto와 람다(lambda)에 대한 기초적인 내용을 담았다.
이 책의 내용
1장은 C++ 언어에 대해서 설명한다. C++ 언어의 역사와 특징을 알아보고 C++ 프로그램의 개발 과정을 설명한다. 2장은 C++ 프로그래밍의 기본에 대해서 설명한다. C++ 프로그램의 기본 요소와 화면 출력에 대해 알아보고 문자열을 다루는 방법과 키보드로부터 문자열을 입력받는 방법을 설명한다. 3장은 클래스와 객체에 대해 설명한다. 객체, 클래스, 생성자, 소멸자, 접근 지정, 인라인 함수, C++ 구조체에 대해 이해하고 바람직한 C++ 프로그램의 작성 과정을 알아본다.
4장은 객체 포인터와 객체 배열, 동적 메모리 할당 및 반환, 객체와 객체 배열의 동적 생성 및 반환에 대해 설명한다. 또한 this의 기본 개념과 제약 조건, string 클래스를 이용한 문자열 사용에 대해 알아본다. 5장은 함수와 참조, 복사 생성자에 대해 설명한다. 값에 의한 호출, 주소에 의한 호출, 객체 치환 및 객체 리턴, 참조와 함수에 대해 알아본다. 또한 깊은 복사와 얕은 복사에 대해 설명한다. 6장은 함수 중복과 static 멤버에 대해 설명한다. 디폴트 매개 변수, 형 변환으로 인한 모호성, 참조 매개 변수로 인한 모호성, 디폴트 매개 변수로 인한 모호성을 알아본다. 또한 static 멤버의 활용에 대해 설명한다.
7장은 프렌드와 연산자 중복에 대해 설명한다. 프렌드의 개념, 이항 연산자 중복, 단항 연산자 중복에 대해 알아본다. 또한 연산자 함수를 클래스의 외부 함수로 작성하고 프렌드로 선언하는 방법을 설명한다. 8장은 상속의 개념, 클래스 상속과 객체, 상속과 객체 포인터, protected 접근 지정에 대해 설명한다. 또한 상속의 종류, 다중 상속의 선언과 활용, 가상 상속의 선언과 가상 상속으로 다중 상속의 문제를 해결하는 방법에 대해 알아본다. 9장은 가상 함수와 추상클래스에 대해 설명한다. 상속 관계에서의 함수 중복과 가상 함수와 오버라이딩의 활용 사례에 대해 알아본다. 또한 추상 클래스의 개념, 구현, 용도에 대해 설명한다.
10장은 템플릿과 표준 템플릿 라이브러리(STL)에 대해 설명한다. 일반화의 개념을 이해하고 다양한 제네릭 함수와 제네릭 클래스를 만들어보고 C++ 표준 템플릿 라이브러리(STL)와 활용에 대해 설명한다. 또한 auto와 람다에 대해 알아본다. 11장은 C++ 입출력 시스템에 대해 설명한다. 스트림 입출력에 대해 이해하고 문자 입출력, 포맷 입출력, 사용자 삽입 연산자와 추출 연산자에 대해 알아보고 사용자 조작자 만들기에 대해 설명한다. 12장은 C++ 파일 입출력에 대해 설명한다. 텍스트 파일과 바이너리 파일에 대해 이해하고 파일 읽기 및 쓰기, 스트림 상태에 대해 알아본다. 또한 임의 접근으로 인한 파일 입출력에 대해 설명한다. 13장은 예외 처리와 C 언어와의 링크 지정에 대해 설명한다. 실행 오류와 오류 처리 방법에 대해 이해하고 예외 처리 코드를 작성하는 방법을 알아본다. 또한 C 언어로 작성된 소스 코드나 이미 컴파일된 목적 코드를 C++ 프로그램에서 사용하는 방법을 알아본다.
작가 소개
지은이 : 황기태
2017년 현 한성대학교 컴퓨터공학부 교수
서울대학교 컴퓨터공학과 박사
서울대학교 컴퓨터공학과 석사
서울대학교 컴퓨터공학과 학사
비트교육센타 센타장
IBM Watson Research Center 방문 연구원
University of California, Irvine 방문 교수
University of Florida 방문 교수
1986년 서울대학교 컴퓨터공학과를 졸업하고, 서울대 대학원 컴퓨터공학과에 입학하여 1988년에 석사, 1994년에 박사 학위를 취득하였다. 1993년 뉴욕에 있는 IBM Watson Research Center에서 방문 연구원을 지내고 1994년부터 현재까지 한성대학교 컴퓨터공학과 교수로 재직중이다. 1990년 비트교육센터의 초기 센터장으로 1994년까지 조현정 회장과 함께 대한민국 최고의 비트교육센터 신화의 토대를 만들었다. 2000년에는 미국 얼바인에 있는 캘리포니아 대학에서, 2011, 2015년에는 플로리다 대학에서 방문 교수를 지냈다.
[저서]
비트프로젝트1, 2(1994, 비아이티출판)
어드밴스 윈도우 NT(1996, 대림출판사)
자바스크립트 웹프로그래밍(2000, 대림출판사)
DHTML+자바스크립트(2003, 대림출판사)
명품 JAVA Programming(2011, ㈜생능출판사)
명품 C++ Programming(2013, ㈜생능출판사)
명품 자바 에센셜(2014, ㈜생능출판사)
목 차
CHAPTER 01 C++ 시작
1.1 컴퓨터와 프로그래밍
1.2 C++ 언어의 역사
1.3 C++ 언어의 특징
1.4 C++ 프로그램 개발 과정
1.5 C++ 표준 라이브러리
1.6 Visual Studio를 이용한 C++ 프로그램 개발
요약
Open Challenge
연습문제
CHAPTER 02 C++ 프로그래밍의 기본
2.1 C++ 프로그램의 기본 요소와 화면 출력
2.2 namespace와 std::
2.3 키 입력 받기
2.4 키보드로 문자열 입력
2.5 #include 에 숨은 진실
요약
Open Challenge
연습문제
CHAPTER 03 클래스와 객체
3.1 객체에 대한 이해
3.2 C++ 클래스 만들기
3.3 객체 생성과 객체 활용
3.4 생성자
3.5 소멸자
3.6 접근 지정
3.7 인라인 함수
3.8 C++ 구조체
3.9 바람직한 C++ 프로그램 작성법
요약
Open Challenge
연습문제
CHAPTER 04 객체 포인터와 객체 배열, 객체의 동적 생성
4.1 객체 포인터
4.2 객체 배열
4.3 동적 메모리 할당 및 반환
4.4 객체와 객체 배열의 동적 생성 및 반환
4.5 this 포인터
4.6 string 클래스를 이용한 문자열 사용
요약
Open Challenge
연습문제
CHAPTER 05 함수와 참조, 복사 생성자
5.1 함수의 인자 전달 방식 리뷰
5.2 함수 호출시 객체 전달
5.3 객체 치환 및 객체 리턴
5.4 참조와 함수
5.5 복사 생성자
요약
Open Challenge
연습문제
CHAPTER 06 함수 중복과 static 멤버
6.1 함수 중복
6.2 디폴트 매개 변수
6.3 함수 중복의 모호성
6.4 static 멤버
요약
Open Challenge
연습문제
CHAPTER 07 프렌드와 연산자 중복
7.1 C++ 프렌드 개념
7.2 연산자 중복
7.3 이항 연산자 중복
7.4 단항 연산자 중복
7.5 프렌드를 이용한 연산자 중복
7.6 참조를 리턴하는 << 연산자 실습
요약
Open Challenge
연습문제
CHAPTER 08 상속
8.1 상속의 개념
8.2 클래스 상속과 객체
8.3 상속과 객체 포인터
8.4 protected 접근 지정
8.5 상속과 생성자, 소멸자
8.6 상속의 종류 : public, protected, private 상속
8.7 다중 상속
8.8 가상 상속
요약
Open Challenge
연습문제
CHAPTER 09 가상 함수와 추상 클래스
9.1 상속 관계에서의 함수 재정의
9.2 가상 함수와 오버라이딩
9.3 가상 함수와 오버라이딩의 활용 사례
9.4 추상 클래스
요약
Open Challenge
연습문제
CHAPTER 10 템플릿과 표준 템플릿 라이브러리(STL)
10.1 일반화와 템플릿
10.2 다양한 제네릭 함수 만들기
10.3 제네릭 클래스 만들기
10.4 C++ 표준 템플릿 라이브러리(STL)와 활용
10.5 auto와 람다식
요약
Open Challenge
연습문제
CHAPTER 11 C++ 입출력 시스템
11.1 C++ 입출력 기초
11.2 ostream의 멤버 함수를 이용한 문자 출력
11.3 istream의 멤버 함수를 이용한 문자 입력
11.4 포맷 입출력
11.5 삽입 연산자(<<)와 추출 연산자(>>)
11.6 사용자 조작자 만들기
요약
Open Challenge
연습문제
CHAPTER 12 C++ 파일 입출력
12.1 텍스트 파일과 바이너리 파일
12.2 파일 입출력 개요
12.3 <<와 >> 연산자를 이용한 간단한 텍스트 파일 입출력
12.4 파일 모드
12.5 멤버 함수를 이용한 텍스트 I/O
12.6 바이너리 I/O
12.7 스트림 상태 검사
12.8 임의 접근
요약
Open Challenge
연습문제
CHAPTER 13 예외 처리와 C 언어와의 링크 지정
13.1 실행 오류와 오류 처리
13.2 예외와 예외 처리
13.3 예외 처리에 대한 자세한 설명
13.4 예외 클래스 만들기
13.5 C++ 코드와 C 코드의 링킹
요약
Open Challenge
연습문제
Check Time 정답
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |