모던 C++ 프로그래밍 쿡북 (100가지 레시피로 배우는 C++ 동작의 이해와 문제 해결)

모던 C++ 프로그래밍 쿡북 (100가지 레시피로 배우는 C++ 동작의 이해와 문제 해결)

$42.68
Description
C++는 가장 오래되고 널리 사용되는 프로그래밍 언어 중 하나로, 빠르고 효율적이며 유연해서 다양한 문제를 해결할 때 사용된다. 이 책은 모든 C++ 개발자를 대상으로 하며, C++를 마스터하고 숙련된 C++ 개발자가 되길 원하는 초/중급 C++ 개발자에게 이상적이다. 숙련된 C++ 개발자에게는
저자

마리우스반실라

산업과금융분야에서14년간의풍부한솔루션개발경험을가진소프트웨어엔지니어다.마이크로소프트기술에중점을두고C++와C#으로데스크톱애플리케이션을개발한다.또한지난수년동안자바와HTML/CSS,PHP,자바스크립트를아우르는다양한언어와기술을사용해왔다.
자신의전문기술및지식을다른사람들과공유하는데열정적이며,그로인해10년이상마이크로소프트MVP로인정받아왔다.여러논문을발표한포럼과개발자커뮤니티에적극적으로기여한공로로여러가지상을수상했으며,다양한오픈소스라이브러리를만들고기여해왔다.
C++개발자를위한루마니아커뮤니티인Codexpert의공동설립자다.루마니아의티미쇼아라(Timisoara)에살고있으며,시스템설계자로일하면서유럽에위치한주요소프트웨어회사의회계및물류솔루션을구축하고있다.트위터(@mariusbancila)에서최신소식을들을수있다.

목차

1장.현대핵심언어특징배우기
__소개
__가능한한auto사용하기
__타입별칭및별칭템플릿생성
__균일한초기화이해하기
__비정적멤버초기화의다양한형식이해하기
__객체정렬제어및쿼리
__범위가지정된열거형사용하기
__가상메소드에override와final사용하기
__범위기반for루프를사용해범위반복하기
__사용자정의타입에대한범위기반for루프활성화
__암시적변환을피하기위해명시적생성자및변환연산자사용하기
__정적전역대신명명되지않은네임스페이스사용하기
__심볼버전관리에인라인네임스페이스사용하기
__구조적바인딩을사용해다중반환값처리하기

2장.숫자와문자열로작업하기
__소개
__숫자와문자열타입간의변환
__숫자타입의제한과기타속성
__의사난수생성
__의사난수생성기의내부상태의모든비트초기화
__가공된사용자정의리터럴작성
__원시사용자정의리터럴작성
__원시문자열리터럴을사용한이스케이프문자방지
__문자열헬퍼라이브러리생성
__정규표현식을사용해문자열포맷확인하기
__정규표현식을사용해문자열의내용파싱하기
__정규표현식을사용해문자열의내용바꾸기
__상수문자열참조대신string_view사용하기

3장.함수
__소개
__디폴트함수와삭제된함수들
__표준알고리즘에서람다사용하기
__제네릭람다사용하기
__재귀람다작성하기
__가변의인수를가진함수템플릿작성하기
__접힌표현식을사용해가변함수템플릿단순화하기
__고차함수맵과폴드구현하기
__함수를고차함수로구성하기
__호출가능한모든것을통합해호출하기

4장.전처리기와컴파일
__소개
__조건부로소스코드컴파일하기
__전처리기문자열화와연결에간접패턴사용
__static_assert로컴파일타임어서션검사수행
__enable_if로조건부로클래스와함수컴파일하기
__constexprif로컴파일시분기선택
__속성으로컴파일러에메타데이터제공하기

5장.표준라이브러리컨테이너와알고리즘,반복자
__소개
__벡터를디폴트컨테이너로사용
__비트의고정크기시퀀스에비트셋사용
__가변크기의비트시퀀스에벡터사용
__범위내의요소찾기
__범위정렬
__범위초기화
__범위에서세트연산사용하기
__반복자를사용해컨테이너에새요소삽입하기
__자신만의임의접근반복자작성하기
__비멤버함수를사용한컨테이너접근

6장.범용유틸리티
__소개
__chrono::duration으로시간간격표현하기
__표준시계로함수실행시간측정
__사용자정의타입에대한해시값생성
__std::any를사용해값을저장
__std::optional을사용해옵션값저장
__타입안전한공용체로std::variant사용
__std::variant방문
__프로그램이정상적으로종료될때호출할함수등록하기
__타입특성을사용한타입의속성조회
__자신만의타입특성작성하기
__std::conditional을사용해타입선택하기

7장.파일과스트림작업
__소개
__바이너리파일에서원시데이터읽기/쓰기
__바이너리파일에서객체읽기/쓰기
__스트림에로컬설정사용
__I/O조작자를사용해스트림출력제어
__통화I/O조작자사용
__시간I/O조작자사용
__파일시스템경로로작업하기
__파일과디렉터리의생성,복사,삭제
__파일에서내용삭제
__기존파일또는디렉터리의속성확인
__디렉터리의내용열거
__파일찾기

8장.스레딩과동시성활용
__소개
__스레드로작업하기
__스레드함수에서예외처리
__뮤텍스와잠금을사용해공유데이터에대한접근동기화
__재귀뮤텍스사용방지
__스레드간통보전송
__프라미스와퓨처를사용해스레드에서값반환
__함수를비동기적으로실행하기
__아토믹타입사용
__스레드로병렬맵과폴드구현하기
__태스크로병렬맵과폴드구현하기

9장.견고성과성능
__소개
__오류처리에예외사용
__오류를던지지않는함수에noexcept사용
__프로그램의상수정확성보장
__컴파일타임상수표현식생성
__올바른타입캐스트수행
__unique_ptr을사용해메모리자원을고유하게소유
__shared_ptr을사용한메모리자원공유
__이동시맨틱구현

10장.패턴과관용어구현
__소개
__팩토리패턴에서반복되는if.else문방지
__핌플관용어구현
__명명된매개변수관용어구현
__비가상인터페이스관용어를사용해구현과인터페이스분리
__변호사-의뢰인관용어프렌드십처리
__회귀템플릿패턴을사용한정적다형성
__스레드안전한싱글톤구현

11장.테스트프레임워크탐색
__소개
__Boost.Test시작하기
__Boost.Test로테스트작성하고호출하기
__Boost.Test로어서트하기
__Boost.Test에서테스트픽스처사용하기
__Boost.Test로출력제어하기
__구글테스트시작하기
__구글테스트로테스트작성하고호출하기
__구글테스트로어서트하기
__구글테스트에서테스트픽스처사용하기
__구글테스트로출력제어하기
__캐치시작하기
__캐치로테스트작성하고호출하기
__캐치로어서트하기
__캐치로출력제어하기

출판사 서평

★이책에서다루는내용★
■스레딩과동시성의표준지원을이해하고기본태스크를수행하는방법학습하기
■C++17파일시스템라이브러리깊이파헤치기
■다양한타입의문자열로작업하고편집의다양한측면살펴보기
■현대기능에중점을둔함수,람다표현식,호출가능한객체탐색하기
■표준라이브러리를활용하고컨테이너,알고리즘,반복자I/O,시간,유틸리티로작업하기
■정규표현식을사용해텍스트를검색하고대체문제해결하기
■개발자가접하는공통적인문제를해결하기위해string_view,any,optional,variant타입을포함한표준라이브러리에새롭게추가된유틸리티사용하기
■널리사용되는C++용테스트프레임워크를알아보고여러가지유용한패턴과관용어구현하기

★이책의대상독자★
이책은경험과지식수준에상관없이볼수있는책으로,모든C++개발자를대상으로한다.언어를마스터하고왕성한현대C++개발자가되길원하는초급또는중급수준의C++개발자에게이상적이다.숙련된C++개발자에게는C++11,C++14,C++17언어및라이브러리기능에관해서수시로편리하게사용할수있는좋은참고자료가될것이다.이책은초급,중급,고급수준의100가지이상의레시피로구성돼있다.모든레시피는C++에대한사전지식이필요하며,여기에는함수,클래스,템플릿,네임스페이스,매크로등이포함된다.
그러므로언어에익숙하지않은독자라면먼저핵심기능에익숙해지도록C++입문서부터읽고나서이책과함께하는것이좋다.

★이책의구성★
1장.‘현대핵심언어특징배우기’에서는타입유추,균일한초기화,범위가지정된enum,범위기반루프,구조화바인딩을포함한최신핵심언어기능을설명한다.
2장.‘숫자와문자열로작업하기’에서는숫자와문자열을변환하는방법,의사난수를생성하는방법,정규표현식을사용하는방법,다양한문자열타입에대해설명한다.
3장.‘함수’에서는디폴트함수와삭제된함수,가변템플릿,람다표현식과고차함수에대해자세히알아본다.
4장.‘전처리기와컴파일’에서는조건부컴파일을수행하는방법을시작으로컴파일타임어서션,코드생성,또는컴파일러에속성암시등과같은컴파일의다양한측면을살펴본다.
5장.‘표준라이브러리컨테이너와알고리즘,반복자’에서는몇가지표준컨테이너와다양한알고리즘을소개하고,자신만의임의접근반복자를작성하는방법을배운다.
6장.‘범용유틸리티’에서는chrono라이브러리의any,optional,variant타입에대해자세히알아보고타입특성을배운다.
7장.‘파일과스트림작업’에서는스트림을읽고쓰는방법,I/O조작자를사용해스트림을제어하고파일시스템라이브러리를탐색하는방법을설명한다.
8장.‘스레딩과동시성활용’에서는스레드,뮤텍스,잠금,조건변수,프라미스,퓨처,아토믹타입과작업하는방법을알려준다.
9장.‘견고성과성능’에서는예외와상수정확성,타입변환,스마트포인터,이동시맨틱에중점을두고알아본다.
10장.‘패턴과관용어구현’에서는핌플(PIMPL)관용어,비가상인터페이스관용어,또는CRTP등과같은여러가지유용한패턴과관용어를다룬다.
11장.‘테스트프레임워크탐색’에서는가장널리사용되는세가지테스트프레임워크인Boost.Test,구글테스트,캐치를시작하는데도움이될만한내용들을소개한다.

★옮긴이의말★
프로그래머라면누구나한번쯤C++프로그래밍에도전해봤을것이다.그만큼C++는오랜기간동안사랑받아온프로그래밍언어임에틀림없다.하지만이해하기어려운문법과복잡한구조로인해많은프로그래머를절망에빠뜨리고결국포기하도록만들었던것도사실이다.그러다가흔히모던C++(ModernC++)로불리는C++11표준이등장하면서이언어는다시금사람들의관심을받으며새로운전성기를누리고있다.
이책은100가지가넘는레시피를통해C++를사용하면서개발자들이직면하게되는공통적인문제와그에대한솔루션을제시하고있다.따분한교과서스타일이아니라필요한부분을골라볼수있게구성돼있어그동안C++의높은벽에좌절했던개발자들이쉽고재미있게C++프로그래밍의세계에다시발을담글수있게해주는책이라고생각된다.C++11과C++14뿐만아니라가장최신버전인C++17에포함된기능까지다루고있어초/중급개발자뿐만아니라숙련된개발자에게도좋은참고서가될것이라믿는다.
상투적인문구이기는하지만,작업을마치고나면항상미흡한부분에대해아쉬움이남기마련이다.꽤많은시간과노력을들여작업했지만,저자의의도를충분히전달하지못하거나잘못번역된부분이있을수있다.잘못된점을비롯해책의내용과관련된어떤의견이라도보내주시면소중히다룰것이다.