나에게 필요한 지식과 기술을 검색해 보세요.

전문가를 위한 C++(개정5판)

C++20, 병렬 알고리즘, 파일시스템, 제네릭 람다, 디자인 패턴, 객체지향의 원리를 익히는 확실한 방법

지은이

마크 그레고리

옮긴이

남기혁

출간일

2023.04.10

레벨

중고급

평점

4.9(34명)

정가

58,400

총 결제 금액

58,400

전자책 사용 안내

전자책은 웹뷰어와 한빛+ 앱에서 열람할 수 있으며 PDF 다운로드는 지원되지 않습니다.

쪽수

1692P

ISBN

9791169216685

브랜드

한빛미디어

더 쉽게, 더 빠르게, 더 깔끔하게!

프로그래머가 알아야 할 C++와 C++20의 모든 것

 

C++는 마스터하기 어렵기로 악명 높지만, 풍부한 기능 덕분에 게임이나 상용 소프트웨어 애플리케이션을 개발하는 대표 언어로 자리매김했다. 숙련된 C++ 프로그래머조차 잘 모르는 고급 기능도 많은데, 최신 C++20이 나온 지금이야말로 C++의 모든 기능을 살펴볼 절호의 기회다.

『전문가를 위한 C++(개정5판)』은 C++20에 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하므로 C++를 더 깊이 이해하려는 프로그래머에게 적합하다.

 

상세이미지_전문가를 위한 C++(개정5판)_700px.jpg

 

출판사 리뷰

C++ 전문가를 꿈꾸는 프로그래머에게 전하는 희소식!

최신 C++를 마스터하려면 알아야 할 C++와 C++20의 모든 것

 

C++ 전문가가 되는 데 필요한 내용을 조목조목 옮긴 책이다. 코드 품질과 프로그래밍 효율을 동시에 높이는 C++ 프로그래밍 기법을 소개한다. 특히 C++20부터 새로 추가된 기능을 이 책 전반에 걸쳐 소개한다. 이러한 기능은 별도 장이나 절로 따로 빼서 한꺼번에 설명하는 대신, 각 장에 관련된 부분이 있을 때마다 하나씩 소개하며 각 장의 예제도 새로운 기능을 활용하도록 업데이트했다.

 

이 책은 단순히 언어의 문법과 기능만 소개하는 데 머물지 않는다. 프로그래밍 방법론, 재사용 가능한 디자인 패턴, 바람직한 프로그래밍 스타일도 함께 다룬다. 특히 코드를 설계하고 작성하는 단계부터 디버깅하고 협업하는 단계에 이르는 전반적인 소프트웨어 개발 프로세스에 따라 설명한다. 그 과정에서 C++ 언어 자체의 기능과 특이한 점을 마스터할 수 있고, 대규모 소프트웨어 개발을 위한 강력한 기법을 익힐 수 있다. 

 

이 책을 제대로 읽는다면 제대로 알려지지 않았거나 잘못 이해하기 쉬운 기능을 제대로 파악함으로써 C++에 대한 지식의 폭을 넓힐 수 있다. 또한 객체지향 설계 방식을 이해하고 최신 디버깅 기술도 익힐 수 있다. 나아가 일상 개발 업무에 당장 적용할 수 있는 재사용성 관련 기법을 풍부하게 갖출 수 있다. C++20 기반의 더 나은 C++ 프로그래머가 될 수 있는 절호의 기회를 놓치지 않길 바란다.

 

대상 독자

 

- C++를 수년 동안 사용한 경험이 있는 개발자

- C++의 고급 기능에 익숙하지 않거나 사용한 적이 없는 개발자

- C++ 실력을 전문가 수준으로 끌어올리고 싶은 중급 개발자

- C++로 설계하는 방법이나 바람직한 프로그래밍 스타일이 궁금한 사람

- C++ 경험은 부족하지만 처음부터 올바르게 배우고 싶은 사람

 

주요 내용

 

- C++의 방대한 기능을 최대한 활용하여 효과적인 솔루션을 개발할 수 있도록 C ++ 사고방식을 제시한다.

- 어설프게 알고 있거나 실수하기 쉬운 부분을 바로잡고 효율과 성능을 높이는 다양한 팁과 기법, 우회 전략을 소개한다.

- 당장 프로젝트에서 마주치고 적용할 수 있는 현실적인 문제와 프로그램 예제를 소개한다.

- 모듈, 콘셉트, 3방향 비교, 즉시 실행 함수를 비롯한 C++20부터 새로 추가된 기능을 소개한다.

- 텍스트 포매팅, 범위, 아토믹 스마트 포인터, 동기화 요소, 날짜, 시간대 등 C++20부터 새로워진 표준 라이브러리의 주요 기능을 심도 있게 살펴본다.

저자

목차

[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 기초

 

7. 관련 서적(제목 + ISBN)

C++ 최적화 / 9791162241981

이것이 C++이다 / 9788968482465

뇌를 자극하는 C++ STL / 9788979149135

 

리뷰

전체 평점

4.9

오탈자

등록된 오탈자가 없어요

오탈자를 발견하셨다면 작성해주세요.

58,400

58,400