
책소개
더 쉽게, 더 빠르게, 더 깔끔하게! 프로그래머가 알아야 할 C++와 C++20의 모든 것. C++는 마스터하기 어렵기로 악명 높지만, 풍부한 기능 덕분에 게임이나 상용 소프트웨어 애플리케이션을 개발하는 대표 언어로 자리매김했다. 숙련된 C++ 프로그래머조차 잘 모르는 고급 기능도 많은데, 최신 C++20이 나온 지금이야말로 C++의 모든 기능을 살펴볼 절호의 기회다.
『전문가를 위한 C++(개정5판)』은 C++20에 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하므로 C++를 더 깊이 이해하려는 프로그래머에게 적합하다.
출판사소개
목차
[PART I 전문가를 위한 C++ 첫걸음]
CHAPTER 1 C++와 표준 라이브러리 초단기 속성 코스
_1.1 C++의 기초
_1.2 어느 정도 규모 있는 첫 C++ 프로그램
_1.3 정리
_1.4 연습 문제
CHAPTER 2 스트링과 스트링 뷰 다루기
_2.1 동적 스트링
_2.2 스트링 포맷 지정
_2.3 정리
_2.4 연습 문제
CHAPTER 3 코딩 스타일
_3.1 코딩 스타일의 중요성
_3.2 코드 문서화
_3.3 코드 분해
_3.4 명명 규칙
_3.5 언어의 기능에 스타일 적용하기
_3.6 코드 서식
_3.7 스타일과 관련하여 해결할 문제
_3.8 정리
_3.9 연습 문제
[PART II 전문가다운 C++ 소프트웨어 설계 방법]
CHAPTER 4 전문가답게 C++ 프로그램 설계하기
_4.1 프로그램 설계의 정의
_4.2 프로그램 설계의 중요성
_4.3 C++에 적합한 설계 방법
_4.4 C++ 설계에 관련된 두 가지 원칙
_4.5 코드 재사용
_4.6 체스 프로그램 설계
_4.7 정리
_4.8 연습 문제
CHAPTER 5 객체지향 설계
_5.1 절차형 사고방식
_5.2 객체지향 철학
_5.3 클래스 세상에 살기
_5.4 클래스 관계
_5.5 정리
_5.6 연습 문제
CHAPTER 6 재사용을 고려한 설계
_6.1 재사용 철학
_6.2 코드를 재사용할 수 있도록 설계하는 방법
_6.3 정리
_6.4 연습 문제
[PART III 전문가답게 C++ 코딩하기]
CHAPTER 7 메모리 관리
_7.1 동적 메모리 다루기
_7.2 배열과 포인터의 두 얼굴
_7.3 로우레벨 메모리 연산
_7.4 흔히 발생하는 메모리 관련 문제
_7.5 스마트 포인터
_7.6 정리
_7.7 연습 문제
CHAPTER 8 클래스와 객체 이해
_8.1 스프레드시트 예제
_8.2 클래스 작성 방법
_8.3 객체의 라이프 사이클
_8.4 정리
_8.5 연습 문제
CHAPTER 9 클래스와 객체 완전 정복
_9.1 프렌드
_9.2 객체에 동적 메모리 할당하기
_9.3 메서드의 종류
_9.4 데이터 멤버의 종류
_9.5 중첩 클래스
_9.6 클래스에 열거 타입 정의하기
_9.7 연산자 오버로딩
_9.8 안정된 인터페이스 만들기
_9.9 정리
_9.10 연습 문제
CHAPTER 10 상속 활용하기
_10.1 상속을 이용한 클래스 구현
_10.2 코드 재사용을 위한 상속
_10.3 부모를 공경하라
_10.4 다형성을 위한 상속
_10.5 다중 상속
_10.6 상속에 관련된 미묘하면서 흥미로운 문제들
_10.7 캐스트
_10.8 정리
_10.9 연습 문제
CHAPTER 11 C++의 까다롭고 유별난 부분
_11.1 모듈
_11.2 헤더 파일
_11.3 언어 핵심 기능에 대한 테스트 매크로
_11.4 static 키워드
_11.5 C 유틸리티
_11.6 정리
_11.7 연습 문제
CHAPTER 12 템플릿으로 제네릭 코드 만들기
_12.1 템플릿 소개
_12.2 클래스 템플릿
_12.3 함수 템플릿
_12.4 변수 템플릿
_12.5 콘셉트
_12.6 정리
_12.7 연습 문제
CHAPTER 13 C++ I/O 심층 분석
_13.1 스트림 사용법
_13.2 스트링 스트림
_13.3 파일 스트림
_13.4 양방향 I/O
_13.5 파일시스템 지원 라이브러리
_13.6 정리
_13.7 연습 문제
CHAPTER 14 에러 처리
_14.1 에러와 예외
_14.2 익셉션 처리 방법
_14.3 익셉션과 다형성
_14.4 익셉션 다시 던지기
_14.5 스택 풀기와 정리
_14.6 익셉션 처리 과정에서 흔히 발생하는 문제
_14.7 정리
_14.8 연습 문제
CHAPTER 15 C++ 연산자 오버로딩
_15.1 연산자 오버로딩 개요
_15.2 산술 연산자 오버로딩
_15.3 비트 연산자와 논리 연산자 오버로딩
_15.4 스트림 입력과 출력 연산자 오버로딩
_15.5 인덱스 연산자 오버로드하기
_15.6 함수 호출 연산자 오버로드하기
_15.7 역참조 연산자 오버로드하기
_15.8 변환 연산자 구현하기
_15.9 메모리 할당 및 해제 연산자 오버로딩
_15.10 사용자 정의 리터럴 연산자 오버로딩
_15.11 정리
_15.12 연습 문제
CHAPTER 16 C++ 표준 라이브러리 둘러보기
_16.1 코드 작성 원칙
_16.2 C++ 표준 라이브러리 둘러보기
_16.3 정리
_16.4 연습 문제
CHAPTER 17 반복자와 범위 라이브러리
_17.1 반복자
_17.2 스트림 반복자
_17.3 반복자 어댑터
_17.4 범위
_17.5 정리
_17.6 연습 문제
CHAPTER 18 표준 라이브러리 컨테이너
_18.1 컨테이너 개요
_18.2 순차 컨테이너
_18.3 컨테이너 어댑터
_18.4 정렬 연관 컨테이너
_18.5 비정렬 연관 컨테이너 - 해시 테이블
_18.6 기타 컨테이너
_18.7 정리
_18.8 연습 문제
CHAPTER 19 함수 포인터, 함수 객체, 람다 표현식
_19.1 함수 포인터
_19.2 메서드 및 데이터 멤버를 가리키는 포인터
_19.3 std::function
_19.4 함수 객체
_19.5 람다 표현식
_19.6 std::invoke( )
_19.7 정리
_19.8 연습 문제
CHAPTER 20 표준 라이브러리 알고리즘 완전 정복
_20.1 알고리즘 개요
_20.2 표준 라이브러리 알고리즘 심층 분석
_20.3 정리
_20.4 연습 문제
CHAPTER 21 스트링 현지화와 정규 표현식
_21.1 현지화
_21.2 정규 표현식
_21.3 정리
_21.4 연습 문제
CHAPTER 22 날짜와 시간 유틸리티
_22.1 컴파일 시간 유리수
_22.2 duration
_22.3 clock
_22.4 time_point
_22.5 날짜
_22.6 타임존
_22.7 정리
_22.8 연습 문제
CHAPTER 23 무작위수 기능
_23.1 C 스타일 무작위수 생성
_23.2 무작위수 엔진
_23.3 무작위수 엔진 어댑터
_23.4 기본 제공 엔진과 엔진 어댑터
_23.5 무작위수 생성하기
_23.6 무작위수 분포
_23.7 정리
_23.8 연습 문제
CHAPTER 24 기타 라이브러리 유틸리티
_24.1 어휘 타입
_24.2 tuple
_24.3 정리
_24.4 연습 문제
[PART IV C++ 고급 기능 마스터하기]
CHAPTER 25 표준 라이브러리 커스터마이즈 및 확장 방법
_25.1 할당자
_25.2 표준 라이브러리 확장하기
_25.3 정리
_25.4 연습 문제
CHAPTER 26 고급 템플릿
_26.1 템플릿 매개변수에 대한 심화 학습
_26.2 클래스 템플릿 부분 특수화
_26.3 오버로딩으로 함수 템플릿 부분 특수화 흉내내기
_26.4 템플릿 재귀
_26.5 가변 인수 템플릿
_26.6 메타프로그래밍
_26.7 정리
_26.8 연습 문제
CHAPTER 27 C++ 멀티스레드 프로그래밍
_27.1 들어가며
_27.2 스레드
_27.3 아토믹 연산 라이브러리
_27.4 뮤텍스
_27.5 상태 변수
_27.6 래치
_27.7 배리어
_27.8 세마포어
_27.9 퓨처
_27.10 멀티스레드 Logger 클래스 예제
_27.11 스레드 풀
_27.12 코루틴
_27.13 바람직한 스레드 디자인과 구현을 위한 가이드라인
_27.14 정리
_27.15 연습 문제
[PART V C++ 소프트웨어 공학]
CHAPTER 28 소프트웨어 공학 기법
_28.1 프로세스의 필요성
_28.2 소프트웨어 라이프 사이클 모델
_28.3 소프트웨어 공학 방법론
_28.4 나만의 프로세스와 방법론 만들기
_28.5 소스 코드 관리
_28.6 정리
_28.7 연습 문제
CHAPTER 29 효율적인 C++ 코드 작성법
_29.1 성능과 효율에 대하여
_29.2 언어 수준의 효율
_29.3 설계 수준 효율
_29.4 프로파일링
_29.5 정리
_29.6 연습 문제
CHAPTER 30 테스트 숙달하기
_30.1 품질 관리
_30.2 단위 테스트
_30.3 퍼징
_30.4 하이레벨 테스트
_30.5 성공적인 테스트를 위한 팁
_30.6 정리
_30.7 연습 문제
CHAPTER 31 디버깅 완전 정복
_31.1 디버깅 기본 원칙
_31.2 버그 분류
_31.3 버그 방지
_31.4 버그 대비
_31.5 디버깅 테크닉
_31.6 정리
_31.7 연습 문제
CHAPTER 32 설계 기법과 프레임워크
_32.1 흔히 사용하지만 까먹기 쉬운 문법
_32.2 고급 기법
_32.3 객체지향 프레임워크
_32.4 정리
_32.5 연습 문제
CHAPTER 33 디자인 패턴
_33.1 의존성 주입
_33.2 추상 팩토리 패턴
_33.3 팩토리 메서드 패턴
_33.4 어댑터 패턴
_33.5 프록시 패턴
_33.6 반복자 패턴
_33.7 옵저버 패턴
_33.8 데코레이터 패턴
_33.9 책임 사슬 패턴
_33.10 싱글턴 패턴
_33.11 정리
_33.12 연습 문제
CHAPTER 34 크로스 플랫폼과 크로스 언어 애플리케이션 개발 방법
_34.1 크로스 플랫폼 개발
_34.2 크로스 언어 개발
_34.3 정리
_34.4 연습 문제
[PART VI 부록]
APPENDIX A C++ 면접 예상 질문
APPENDIX B 참고 문헌
APPENDIX C 표준 라이브러리 헤더 파일
APPENDIX D UML 기초
배송
- 배송비, 무료배송비는 업체 사정에 따라 달라질 수 있습니다.
- 배송은 결제 확인 후 다음날부터 2~3일 이내에 배송됩니다. (단 도서 산간지역은 1~2일정도 더 소요됩니다.)
- 공휴일은 배송기간에 포함되지 않습니다.
- 주문하신 상품이 여러개인 경우 동일한 업체의 상품만 묶음 배송 가능합니다. (업체 사정에 따라 달라질 수 있습니다.)
- 배송정보는 상단 주문조회나 마이페이지 주문목록에서 가능합니다.
상품 품절
- 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드립니다.
주문취소/변경
- 주문 상품에 대한 변경사항(품절,가격변동)이 발생하면 전화나 메일을 통해 변경내용을 알려드립니다.
- 주문 상품의 변경/취소/환불은 배송 시작전 마이페이지에서 직접 신청이 가능합니다.
- 주문 상품이 발송된 시점에서는 변경/취소/환불이 모두 불가능합니다.
반품/교환
- 기간 : 배송받으신 후 7일 이내에 가능합니다.
- 방법 : 홈페이지 마이페이지 > 반품/ 교환 신청 및 조회에서 가능합니다.
- 배송비 부담 : 상품에 이상이 있을시에는 무료, 고객의 단순변심 및 착오구매일 경우 상품 반송비용은 고객 부담입니다.
- 포장 개봉 후 재판매가 불가능한 상품은 반품/교환이 불가능합니다.
- 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우, 반품/교환이 불가능합니다.
반품/교환 불가 사유
- 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우 (단지 확인을 위한 포장 훼손은 제외)
- 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
- 복제가 가능한 상품 등의 포장을 훼손한 경우
- 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
- 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
- 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
- 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
소비자 피해보상 환불 지연에 따른 배상
- 상품의 불량에 의한 반품, 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 준하여 처리합니다.
- 대금 환불 및 환불 지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리합니다.