상세정보
전문가를 위한 C++
- 저자
- 마크 그레고리
- 출판사
- 한빛미디어
- 출판일
- 2023-03-30
- 등록일
- 2023-10-18
- 파일포맷
- PDF
- 파일크기
- 29MB
- 공급사
- 교보문고
- 지원기기
-
PC
PHONE
TABLET
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
C++는 마스터하기 어렵기로 악명 높지만, 풍부한 기능 덕분에 게임이나 상용 소프트웨어 애플리케이션을 개발하는 대표 언어로 자리매김했다. 숙련된 C++ 프로그래머조차 잘 모르는 고급 기능도 많은데, 최신 C++20이 나온 지금이야말로 C++의 모든 기능을 살펴볼 절호의 기회다.
『전문가를 위한 C++(개정5판)』은 C++20에 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하므로 C++를 더 깊이 이해하려는 프로그래머에게 적합하다.
저자소개
Marc Gregoire
벨기에 출신 소프트웨어 아키텍트. 루벤 대학교에서 컴퓨터 과학과 인공지능 분야의 석사 과정을 우수한 성적으로 졸업했다. 소프트웨어 컨설팅 회사인 오디나 벨지움(Ordina Belgium)에서 컨설턴트로 근무하면서 지멘스와 노키아 지멘스 네트웍스에서 통신 시스템 운영자를 위한 솔라리스 기반 2G 및 3G 관련 소프트웨어 업무를 담당했다. 이 과정에서 남미, 미국, 유럽, 중동, 아프리카, 아시아를 비롯한 전 세계 출신의 개발자와 협업하는 경험을 했다. 현재 3D 형상 검사용 정밀 광학 장비와 메트롤로지 솔루션을 공급하는 니콘 메트롤로지Nikon Metrology(www.nikonmetrology.com)에서 소프트웨어 아키텍트로 근무한다.
전문 분야는 C/C++이며 마이크로소프트 VC++와 MFC 프레임워크 경험이 풍부하다. 이와 관련하여 윈도우와 리눅스 플랫폼에서 하루 24시간, 7일 동안 구동하는 KNX/EIB 홈오토메이션 소프트웨어를 C++로 개발한 경험이 있다. C/C++ 외에도 C#과 PHP를 이용한 웹 페이지 제작을 즐긴다.
목차
[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 기초