Top

두렵지 않은 C++ [영리하게 코딩하고 싶은 C++ 초급 개발자를 위한 가이드]

  • 원서명C++ Without Fear: A Beginner's Guide That Makes You Feel Smart (2nd Edition) (ISBN 9780132673266)
  • 지은이브라이언 오버랜드
  • 옮긴이한정애
  • ISBN : 9788960774025
  • 40,000원
  • 2013년 02월 27일 펴냄
  • 페이퍼백 | 620쪽 | 188*250mm
  • 시리즈 : 프로그래밍 언어

책 소개

기존 C++ 입문서와 달리 쉽고 재미있는 데다 실용적이기까지 한 예제를 중심으로 C++의 기본을 충실히 설명하는 책이다. C++ 초보자를 대상으로 가장 기본적인 제어 구조, 함수 및 파일 접근에서부터 시작해 다형성에 이르기까지 방대한 C++의 기능을 잘 풀어 썼다. 입문서이기는 하지만 새로 공개된 C++11과 템플릿에 대해서도 소개하며, 처음 쓰기에 적합한 STL도 알려주므로, C++ 초보는 물론 C++ 중급 이상의 개발자들도 기초를 다시 튼튼히 하고 자주 저지르던 잘못을 바로잡고 싶다면 이 책을 읽어보자.


[ 소개 ]

컴퓨터 프로그래밍을 해보고 싶었다면, 그 중에서도 특히 널리 사용되는 C++를 배우고 싶었다면 『두렵지 않은 C++』로 시작하자. C++를 배우는 가장 멋진 방법이다.

호평을 받았던 초판에서처럼 저자는 입력하기 편한, 짧고 간단한 예제를 강조했다. 몇 장이 지나면 유용한 유틸리티도 만들 수도 있고, 게임을 즐길 수도 있으며, 재미있는 컴퓨터 퍼즐을 만들 수도 있다. 복잡하기만 하거나 의미 없는 예제를 보여주곤 하는 많은 프로그래밍 교과서에서 벗어나 그의 방식을 따라 해보자. 이 책에는 여러분이 프로그래밍을 빨리 배우기 위해 필요한 모든 것들이 끈기 있게 설명돼 있고, 명확하게 묘사돼 있을 뿐만 아니라, 심지어 재미있기까지 하다.

물론 프로그래밍은 복잡한 일이고 C++는 전문가들이 사용하는 언어다. 사실 가장 멋진 게임들, 그래픽과 인터넷 애플리케이션들 대부분은 C++로 만들어졌고 화성 탐사 로봇에서도 사용됐다.

하지만 C++라는 언어 자체는 표지에 실린 괴물처럼 두려워해야 할 존재가 아니다. 잘게 쪼개고 들어가면서 그 진수를 파악하고, 간단한 예제로 공부하고 실용적인 연습문제를 풀어보면서 각 기능들이 왜 있는 것인지, 그리고 어떤 트릭이 숨겨져 있는지 알게 되는 동안 엄청나게 빠르게 C++를 배워나갈 수 있을 것이다.


[ 이 책에서 다루는 내용 ]

『두렵지 않은 C++』에서 다루는 내용
■ C++ 프로그래밍의 기초
■ 자신만의 프로그래밍 작성법
■ 각 프로그램 조각들의 동작 원리
■ 유용하고 재사용 가능한 프로그램 코드 작성
■ 쉽고 이해하기 쉬운 용어로 익히는 객체지향 프로그래밍

이 책의 내용은 거의 모든 C++ 언어에 적용할 수 있지만, 최근에 나온 아주 훌륭한 C++ 표준인 C++11의 중요한 기능 몇 가지를 추가로 설명했다.

개정판에서 추가된 내용
■ 더 늘어난 그림, 예제와 연습문제
■ 더욱 풍부해진 퍼즐과 게임
■ 75페이지에 달하는 C++ 언어 참고 자료
■ 무료 C++ 소프트웨어 다운로드 방법

그냥 재미 삼아 C++ 프로그래밍을 배우려는 것이든, 프로그래밍으로 성공하고 싶은 것이든, 이 책이야말로 여러분이 선택할 수 있는 최고의 책이다.

저자/역자 소개

[ 저자 서문 ]

아주 오래 전, 프로그래머로 먹고 살기 위해 밤을 새워가며 C를 배워야 했을 때(C++도 나오기 전이었다) 내 월급의 절반을 써서라도 프로그래밍 멘토를 구했다면 멘토는 이렇게 조언했을 것이다. “바로 이 부분이 잘못됐네…… C를 배우면서 저지르는 오류들 말이야. 자, 이 오류를 피하려면 이렇게 해야 하네.” 하지만 난 멘토를 구하지 않았고, 프로그램을 작성할 때 저지를 수 있는 모든 오류를 다 저지르고 다녔으며, 그걸 스스로 해결하기 위해 단맛 쓴맛을 다 맛봐야 했다.

내가 말하고 싶은 것은 글을 쓸 줄 아는 프로그래머나 프로그램을 작성할 줄 아는 작가가 필요하다는 이야기가 아니다. 그런 사람은 드물다. 그보다 더 더욱 드문 건 프로그래머이면서 작가이고 선생님인 사람이다. 즉, 기초적인 사항들을 가르쳐주면서 잘 이끌어가고, 이 언어가 이렇게 만들어진 이유를 알려줌으로써 왜 이렇게 하면 유용할 뿐 아니라 멋지기까지 한지에 대해 열심히 설명해줄 수 있는 사람은 정말 드물다.

그런 사람을 찾는 건 정말 어려웠다. 그래서 나는 내가 그런 사람이 돼야겠다고 결심했다.

이후 마이크로소프트 사에서 일하면서 기술 지원과 테스트로 일을 시작했고 관리자로의 길을 걷기 시작했다. 하지만 내게 가장 중요했던 일은 새로운 기술을 설명하는 일이었다. 때로 나는 프로그래밍 언어의 새로운 기능을 접하는 두 번째나 세 번째 사람이었고, 암호문 같은 내용을 우주에 존재하는 다른 모든 사람이 이해할 수 있게 풀어 써야 했다. “간단하게 만들라”라는 목표는 그냥 일이 아니라 내 사명이었다.

이 책의 특징

이 책이 다른 점은 무엇일까? 바로 내가 여러분, 그러니까 독자 여러분을 지지한다는 점이다. 나는 어떤 위원회의 편이 아니라 여러분의 편이다. 나는 여러분이 프로그램을 ‘만들게 된 이유’도 다 알고 있으며, 왜 프로그램이 개선돼야 하는지도 알고 있다(그런 문제들도 다룰 생각이다). 하지만 내가 제일 신경을 많이 쓴 것은 무엇이 어떻게 동작하는가를 설명하는 부분이었다.

이 책을 쓸 때 나는 여러분이 프로그래밍에 대해서는 전혀 모른다고 가정했다. 그래도 여러분이 컴퓨터를 켜고 마우스를 움직일 수는 있다고 생각했다. 좀 더 많은 걸 알고 있다면 처음 몇 장은 가볍게 뛰어넘어도 좋다.

C와 C++의 창시자(데니스 리치(Dennis Ritchie)와 비야네 스트루스트룹(Bjarne Stroustrup))는 천재들이고, 난 그들의 성과에 경외심을 느낀다. 물론 C와 C++는 위대한 언어이지만 초보자들(그리고 상대적으로는 더 숙련된 프로그래머들)이 앞으로 적어도 몇 년 동안 절대 사용하지 않을 기능들도 좀 있다. 어떤 언어 기능을 무시할 수도 있고, 왜 무시해야만 하는지를 이야기하는 게 난 전혀 두렵지 않다. 동시에 나는 여러분께 시간과 에너지를 절약해주는 C++의 멋진 기능들을 알려주려고 애쓸 생각이다.

이 책은 실용적인 예제들에 관한 책이다. 그리고 재미있게 읽을 수 있는 책이기도 하다! 이 책의 예제 대부분은 유용하고 실용적이며 예제 자체가 매우 흥미롭다(퍼즐이라든지 게임을 주로 다루었으니까 말이다).

그러니 두려워 말자! 난 데이터 추상 같은 용어들을 너무 많이 써서(너무 남용되는 경향이 있다) 여러분이 정신을 놓게 만들지 않을 것이다. 교수님들이 그런 용어들을 정말 좋아하긴 하지만 대다수의 사람들에게는 여전히 혼란스러운 개념일 뿐이다. 여러분이 정말로 알기 원하는 몇 가지 용어(객체지향과 다형성)에 대해서는 쉽게 이해해서 바로 사용할 수 있도록 견고하고 실용적인 예제로 설명한다.

개정판에서 달라진 내용

초판은 지난 몇 년간 정말 잘 팔렸다. 완결된 예제, 연습문제, 개념적인 기술에 대한 풍부한 예제를 통해 C++ 프로그래밍을 공부하는 여러 가지 방법을 제시하는 기념비적인 책이었다. 개정판은 이 책만의 강점을 다음과 같이 좀 더 강화시켰다.

•C++11의 새 기능 설명: 이 책을 여러분이 손에 쥐었을 때쯤에는 이미 C++11이 C++의 새로운 표준이 돼 있을 것이다. 컴파일러 판매자들은 이 표준을 지원하기 위해 새로운 C++를 내놓았거나 내놓으려 할 것이다. 이 책은 새 표준에서 제공하는 많은 기능들을 깊이 있게 살펴본다.

•퍼즐과 게임을 다루는 풍부한 예제: 2장이 끝날 때쯤이면 프로그램을 어떻게 입력하는지 배울 것이며, 한 페이지도 안 되는 코드로도 완전한 게임을 만들 수 있고, 게다가 컴퓨터가 취할 최적화 전략도 구현할 수 있을 것이다. 하지만 이건 그저 시작일 뿐이다. 개정판에는 초판보다 더 재미있는 퍼즐과 게임들을 더 많이 소개한다.

•개념적인 기술에 대한 풍부한 사용 예제: 추상적인 사항들을 명확하게 설명한 것이야말로 초판의 가장 큰 강점이었다. 이번 판은 그 강점을 이어받아 좀 더 풍부한 예제를 덧붙였다.

•풍부한 연습문제: 공부할 때 가장 좋은 방법은 연습이다. 많은 연습문제를 통해 예제가 어떻게 동작하는지, 왜 그렇게 동작하는지, 자신만의 기능을 추가하려면 어떻게 수정해야 하는지 알아 볼 수 있다.

•뜻이 잘 통하는 문법 도식: 게임을 프로그래밍하고 직접 게임을 하는 것은 재미있다. 하지만 프로그래밍을 배우려면 직관적인 정보가 필요할 때도 있다. 이 책에서 사용한 문법 도식은 다양한 예제를 사용해 실제 언어가 동작하는 방법을 정확하고 명확하게 보여준다. 한 명령문, 한 명령문, 한 키워드, 한 키워드 단위로 말이다.

•표준 템플릿 라이브러리(STL, standard template library) 소개: STL 매뉴얼 전체를 다룰 만한 지면이 부족했지만, 개정판에서는(초판과 달리) 이 멋진 C++ 기능에 대해 궁금해 하는 독자들을 위해 STL을 사용하면 시간과 에너지를 얼마나 절약할 수 있는지, 그리고 정말로 짧은 코드만으로도 강력한 애플리케이션을 만들 수 있음을 설명한다.

•늘어난 참고 자료: 맨 뒤의 부록은 C++ 프로그램을 작성할 때 들춰볼 수 있는 작은 책상용 참고 자료로 만들었다. 개정판에서는 이 부록 부분을 크게 확장했다.

•철학을 담은 칼럼: 책 전반에서 C++와 관련이 있는, 하지만 컴퓨터 과학, 프로그래밍의 역사, 수학, 철학과 인공지능 등과 같은 더 넓은 세상에 영향을 주는 영역으로 우회하기도 할 생각이다. 하지만 이런 칼럼은 따로 구분돼 있으니 주제의 흐름을 방해하진 않을 것이다. 심심할 때 읽어봐도 좋다.


[ 저자 소개 ]

브라이언 오버랜드 (Brian overland)
14세 때 처음으로 전문 수학 잡지에 글을 기고했다.
예일대학을 졸업한 후 전 세계에서 사용되는 관개 제어 시스템을 포함한 대형 상용 프로젝트에서 C와 베이직으로 프로그래밍하는 일을 시작했다. 또한 수학과 컴퓨터 프로그래밍과 글쓰기에 관해 가르쳤으며, 마이크로소프트 사와 전문대 수업도 진행했다. 한편, 영화와 드라마에 대한 평론을 지역 신문에 기고하는 일을 즐겨 꾸준히 글 을 올리고 있다. 기술서 작가로서 그에 대한 평가는 매우 특이하다. 브라이언의 글은 실제 프로그래밍과 경험이 녹아있을 뿐 아니라 글 자체도 훌륭하다는 평가를 받는다.
마이크로소프트 사에서 10년간 일했으며, 그동안 테스터, 작가, 프로그래머와 관리자로 활약했다. 기술 작가(technical writer)로 일하며, 링커와 어셈블러 같은 고급 유틸리티 전문가가 됐으며, 새로운 기술에 대해 글을 쓸 때는 어디든 달려가 조언을 구하는 열정적인 인물로 정평이 났다. 비주얼 베이직 1.0을 위한 전체 문서를 조직화하는 놀라운 업적을 이뤘으며, 그 당시로는 새로운 개념이었던 객체 기반 프로그래밍를 가르치고 알리는 데 주도적인 역할을 맡았다. 비주얼 C++ 1.0 팀의 일원이기도 했다.
그 이후로, 여러 스타트업 회사에 일원(때로는 CEO로)으로 참여해왔다. 지금은 소설을 쓰고 있다.


[ 옮긴이의 말 ]

나는 컴퓨터 공학을 전공하고 지금도 프로그래머로 일하고 있긴 하지만, 사실 대학에 들어오기 전까지는 C++라는 게 뭔지도 몰랐다. 게다가 내가 다닌 대학은 그다지 친절한 편도 아니어서 프로그래밍 언어 정도는 스스로 알아둬야 하는 기본 교양이었다. 그래서인지 이 책을 번역하면서 “내가 대학 1학년일 때 이 책이 있었다면 대학 생활이 얼마간은 편해졌을 텐데”라는 생각이 많이 들었다.

hello, world로 시작하는 수많은 입문서들이 있고, 그 책들의 설명에 틀린 점도 없는데 왜 그렇게도 도움을 받지 못했던 걸까? 정말 C와 C++에 대해 아무것도 모르는 사람이 어떤 유용한 것(이를테면 학교 프로젝트)을 만들어낼 수 있으려면 뭘 알아야 하는 것일까? 아마 이 책을 집어 든 여러분도 이미 집에 몇 권쯤 쌓여있는 책들을 보면서 내가 문제인 것인지, 책이 문제인 것인지 진지하게 고민 좀 해봤을 것 같다.

대학을 졸업한 지도 벌써 10년이 지난 지금, 그 의문에 대한 나의 답은 단순하게 정리됐다. “프로그래밍 언어도 언어다. 단지 대화하는 대상이 애매한 건 못 참는 컴퓨터이고, 대화 내용이 그다지 평범하지 않을 뿐이다.”

여러분은 계산하는 기계인 컴퓨터에 뭘 묻고 싶은가? 내일 증시 동향? 경마 우승마? 로또 번호? 아쉽게도 컴퓨터가 이런 질문에 대한 답을 주진 못한다. 하지만 컴퓨터는 백치천재들과도 같아서, 1,024년의 부활절이 언제였는지, 아니면 여러분의 128세 생일이 화요일인지 수요일인지는 자신만만하게 알려줄 수 있다. 그러니 이런 계산은 컴퓨터에 맡기자. 이 책의 저자처럼 ‘두려움을 느끼지 않고’ 용감하게, 어떻게 하면 더 짧은 시간 내에 답을 얻어낼 수 있는지, 어떻게 하면 노동시간은 줄이면서도 더 어려운 계산을 하는 프로그램을 쉽게 만들 수 있는지는 그렇게 한걸음 내딛고 난 후 고민해도 상관없다.

일단 시작하자. 여러분도, 그 많은 입문서들도 문제는 없었다. 하지만 이 책으로 시작하면 좀 더 쉬울 것이다.


[ 옮긴이 소개 ]

한정애
서울대학교 컴퓨터공학과를 졸업하고 동 대학원에서 무선 통신에 대한 연구로 박사 학위를 받았다. 리눅스와 리눅스 프로그램 등을 포함한 컴퓨터와 관련된 다양한 분야에 관심이 많다.
옮긴 책으로 에이콘출판사에서 출간한 『리눅스 실전 가이드』(2007), 『리눅스 기반의 임베디드 제품 디자인』(2007), 『C++ 템플릿 가이드』(2008)가 있다.

목차

목차
  • 1장 첫 번째 C++ 프로그램
    • 프로그래머처럼 생각하기
      • 컴퓨터는 시키는 대로만 한다
      • 프로그램에게 무엇을 시킬지 결정하기
      • 동등한 C++ 명령문 작성
      • 칼럼: 컴퓨터는 정말 얼마나 ‘똑똑’한가, 진짜?
      • 몇 가지 바보 같은 정의 - 리뷰
    • C++는 무엇이 다른가?
    • C++ 프로그램 작성
      • 프로그램 명령문 입력
      • 프로그램 빌드(컴파일과 링크)
      • 프로그램 테스트
      • 필요한 만큼 수정
    • 자신만의 C++ 컴파일러 설치
      • 예제 1.1 메시지 출력
      • Dev-C++ 환경을 사용할 경우
      • 마이크로소프트 사의 비주얼 스튜디오를 사용할 경우
      • 동작 방법
      • 연습문제
      • 칼럼: #include와 using이 무엇인가?
    • 다음 출력 행으로 줄 바꿈
      • 예제 1.2 여러 줄 출력
      • 동작 방법
      • 연습문제
      • 칼럼: 문자열이란 무엇인가?
    • 데이터 저장하기: C++ 변수
    • 데이터형 소개
      • 칼럼: 왜 한 배가 아니라 두 배인가?
      • 예제 1.3 기온 변환
      • 동작 방법
      • 프로그램 최적화
      • 연습문제
    • 변수 이름과 키워드에 관한 몇 가지
      • 연습문제
    • 정리
  • 2장 결정, 결정
    • 데이터형에 대한 몇 가지 더
    • 프로그램에서의 결정
      • 칼럼: 인공 지능(AI, artificial interlligence)이란 무엇인가?
      • if와 if-else
      • 칼럼: 왜 두 연산자(= 와 ==)를 사용하는가?
      • 예제 2.1 홀수 혹은 짝수?
      • 동작 방법
      • 코드 최적화
      • 연습문제
    • 루프 소개
      • 칼럼: 무한 루프
      • 예제 2.2 1에서부터 N까지 출력
      • 동작 방법
      • 프로그램 최적화
      • 연습문제
    • C++에서 참 혹은 거짓
      • 칼럼: 불리언 데이터형
    • 증가 연산자(++)
    • 명령문과 표현식
    • 불리언(지름길) 논리 소개
      • 칼럼: 무엇이 ‘참’인가?
      • 예제 2.3 나이 검사
      • 동작 방법
      • 연습문제
    • 수학 라이브러리 소개
      • 예제 2.4 소수 검사
      • 동작 방법
      • 프로그램 최적화
      • 연습문제
      • 예제 2.5 빼기 게임(NIM)
      • 동작 방법
      • 연습문제
    • 정리
  • 3장 간편한 다용도 ‘for’ 명령문
    • 카운트를 위한 루프
    • ‘for’ 루프 소개
    • 수많은 예제
      • 칼럼: ‘for’는 항상 ‘while’처럼 동작하는가?
      • 예제 3.1 ‘for’를 사용해 1에서부터 N까지 출력
      • 동작 방법
      • 연습문제
    • for에서 복합 명령문(블록) 사용
    • 즉석에서 루프 변수 선언
      • 예제 3.2 ‘for’를 사용한 소수 검사
      • 동작 방법
      • 연습문제
    • 비교 언어 101: 베이직의 ‘For’명령문
    • 정리
  • 4장 함수: 많은 것을 호출
    • 함수의 개념
    • 함수 사용의 기본
      • 단계 1: 함수 선언(프로토타입)
      • 단계 2: 함수 정의
      • 단계 3: 함수 호출
      • 예제 4.1 avg() 함수
      • 동작 방법
      • 함수가 함수를 호출!
      • 연습문제
      • 예제 4.2 소수 함수
      • 동작 방법
      • 연습문제
    • 지역 변수와 전역 변수
      • 칼럼: 왜 전역 변수를 사용할까?
    • 재귀 함수
      • 예제 4.3 인수 분해
      • 동작 방법
      • 칼럼: 수학쟁이를 위한 칼럼
      • 연습문제
      • 예제 4.4 최대 공약수를 구하는 유클리드의 알고리즘
      • 동작 방법
      • 칼럼: 유클리드가 누구지?
      • 연습문제
      • 칼럼: 수학쟁이를 위한 칼럼: 증명의 나머지 부분
      • 예제 4.5 아름다운 재귀, 하노이의 탑
      • 동작 방법
      • 연습문제
      • 예제 4.6 난수 생성기
      • 동작 방법
      • 연습문제
    • 게임과 추가 게임
    • 정리
  • 5장 배열: 모두 한 줄에
    • C++ 배열 들여다보기
    • 배열 초기화
    • 0으로 시작하는 인덱스
      • 칼럼: 왜 0으로 시작하는 인덱스를 쓰는가?
      • 예제 5.1 요소 출력
      • 동작 방법
      • 연습문제
      • 예제 5.2 난수는 얼마나 무작위일까?
      • 동작 방법
      • 연습문제
    • 문자열과 문자열의 배열
      • 예제 5.3 첫 번째 카드 돌리기
      • 동작 방법
      • 연습문제
      • 두 번째 카드 돌리기
      • 동작 방법
      • 연습문제
      • 예제 5.5 세 번째 카드 돌리기
      • 동작 방법
      • 프로그램 최적화
      • 연습문제
    • 지혜로운 한마디
    • 2차원 배열: 행렬로 한 걸음
    • 정리
  • 6장 포인터: 데이터를 처리할 손잡이
    • 포인터가 뭔데?
    • 포인터의 개념
      • 칼럼: 주소는 어떻게 생겼는가?
    • 포인터 선언과 사용
      • 예제 6.1 주소 출력
      • 예제 6.2 double_it 함수
      • 동작 방법
      • 연습문제
    • 교환: 포인터를 사용하는 또 다른 함수
      • 예제 6.3 배열 정렬
      • 동작 방법
      • 연습문제
    • 포인터 연산
    • 포인터와 배열 처리
      • 예제 6.3 배열을 0으로 초기화
      • 동작 방법
      • 좀 더 간결한 코드 작성
      • 연습문제
    • 정리
  • 7장 문자열: 텍스트 분석
    • 컴퓨터 내의 텍스트 저장소
      • 칼럼: 컴퓨터는 프로그램을 어떻게 번역하는가?
    • 문자열이 없다면 아무 뜻도 없다
    • 문자열 조작 함수
      • 예제 7.1 문자열 생성
      • 동작 방법
      • 연습문제
      • 칼럼: 이스케이프 문자열이란 무엇인가?
    • 문자열 입력 읽기
      • 예제 7.2 숫자 얻기
      • 동작 방법
      • 연습문제
      • 예제 7.3 대문자로 변환
      • 동작 방법
      • 연습문제
    • 개별 문자와 문자열
      • 예제 7.4 strtok으로 입력 값 자르기
      • 동작 방법
      • 연습문제
    • 새로운 C++ 문자열 데이터형
      • String 클래스 지원 포함
      • string으로 변수 선언과 초기화
      • string형 변수로 작업
      • 입력과 출력
      • 예제 7.5 string형을 사용해 문자열 생성
      • 동작 방법
      • 연습문제
    • string 클래스가 지원하는 기타 연산
    • 정리
  • 8장 파일: 전자적 저장소
    • 파일 스트림 객체 소개
    • 디스크 파일을 참조하는 방법
      • 예제 8.1 파일에 글쓰기
      • 동작 방법
      • 연습문제
      • 예제 8.2 텍스트 파일 출력
      • 동작 방법
      • 연습문제
    • 텍스트 파일과 바이너리 파일
      • 칼럼: ‘바이너리 파일’들은 진짜로 바이너리일까?
    • 바이너리 연산 소개
      • 예제 8.3 무작위 접근 쓰기
      • 동작 방법
      • 연습문제
      • 예제 8.4 무작위 접근 읽기
      • 동작 방법
      • 연습문제
    • 정리
  • 9장 고급 프로그래밍 기술
    • 커맨드라인 인자
      • 예제 9.1 커맨드라인에서 입력받은 파일 출력
      • 동작 방법
      • 프로그램 개선
      • 칼럼: 미리 정의된 상수의 아름다움
      • 연습문제
    • 함수 오버로딩
      • 칼럼: 오버로딩과 객체지향
      • 예제 9.2 다른 데이터형을 갖는 배열 출력
      • 동작 방법
      • 연습문제
    • do-while 루프
    • switch-case 명령문
    • 다중 모듈
    • 예외 처리: 예외가 있습니다!
      • 예외의 기초
      • 예외 처리: 첫 번째 시도
      • try-catch 예외 처리 소개
    • 정리
  • 10장 C++11의 새로운 기능
    • C++11 기능의 개요
    • long long형(long long long은 아님)
      • 칼럼: 왜 ‘자연’ 정수인가?
      • 64비트 리터럴(상수) 사용
      • long long형으로 입력받기
      • long long 숫자 보기 좋게 출력
      • 예제 10.1 피보나치: 64비트 예제
      • 동작 방법
      • 연습문제
      • 숫자 현지화
      • 칼럼: 피보나치가 누굴까?
    • 범위 기반 ‘for’
      • 예제 10.2 범위 기반 ‘for’로 배열 초기화
      • 동작 방법
      • 연습문제
    • auto와 decltype 키워드
    • nullptr 키워드
    • 강한 데이터형 열거형
      • C++11에서 enum 클래스
      • 확장된 열거형 문법: 저장소 제어
      • 예제 10.3 가위 바위 보 게임
      • 동작 방법
      • 더 재미있는 게임
      • 연습문제
    • 원 문자열 리터럴
    • 정리
  • 11장 클래스 소개: 분수 클래스
    • 객체지향: 유사 지능 데이터형
      • 칼럼: OOP…… 그만한 가치가 있나요?
    • Point: 간단한 클래스
      • 칼럼: C 프로그래머를 위한 칼럼: 구조체와 클래스
    • private: 멤버들만 접근 가능(데이터 보호)
      • 예제 11.1 Point 클래스 검사
      • 동작 방법
      • 연습문제
    • Fraction 클래스 소개
    • 인라인 함수
    • 최대공약수 찾기
    • 최소공배수 찾기
      • 예제 11.2 분수를 지원하는 함수
      • 동작 방법
      • 연습문제
      • 예제 11.3 Fraction 클래스 검사
      • 동작 방법
      • 칼럼: 새로운 #include 방식?
      • 연습문제
      • 예제 11.4 분수 연산: 뎃셈과 곱셈
      • 동작 방법
      • 연습문제
    • 정리
  • 12장 생성자: 그걸 만든다면……
    • 생성자 소개
    • 다중 생성자(오버로딩)
    • C++11만 지원: 클래스 내에서 멤버 초기화
    • 기본 생성자: 그리고 경고
      • 칼럼: C++가 기본 생성자를 가지고 놀리는 거 아냐?
    • C++11만 지원: 생성자 파견? 위임?
    • C++11만 지원: 일관된 초기화
      • 예제 12.1 Point 클래스 생성자
      • 동작 방법
      • 연습문제
      • 예제 12.2 분수 클래스 생성자
      • 동작 방법
      • 연습문제
    • 참조 변수와 인자(&)
    • 복사 생성자
      • 칼럼: 복사 생성자와 참조자
      • 예제 12.3 분수 클래스 복사 생성자
      • 동작 방법
      • 연습문제
    • 문자열에서 분수로 바꾸는 생성자
    • 정리
  • 13장 연산자 함수: 클래스 활용
    • 클래스 연산자 함수 소개
    • 전역 함수로서의 연산자 함수
    • 참조자로 효율 높이기
      • 예제 13.1 포인트 클래스 연산자
      • 동작 방법
      • 연습문제
      • 예제 13.2 분수 클래스 연산자
      • 동작 방법
      • 코드 최적화
      • 연습문제
    • 기타 데이터형과 함께 사용
    • 클래스 할당 함수(=)
    • 같은지 비교 함수(==)
    • 클래스 ‘출력’ 함수
      • 예제 13.3 최종 분수 클래스
      • 동작 방법
      • 연습문제
    • C++11만 지원: 사용자 정의 리터럴
      • 원 문자열 리터럴 정의
      • 준비된 리터럴 정의
    • 정리
  • 14장 동적 메모리와 문자열 클래스
    • 동적 메모리: ‘new’ 키워드
    • 객체와 ‘new’
    • 여러 데이터 할당
      • 칼럼: 메모리 할당과 관련된 문제 해결하기
      • 예제 14.1 동적 메모리 사용
      • 동작 방법
      • 연습문제
    • 클래스 소멸자
      • 예제 14.2 간단한 문자열 클래스
      • 동작 방법
      • 연습문제
    • ‘깊은’ 복사와 복사 생성자
    • this 키워드
    • 할당 연산자 다시 보기
    • 결합 함수 작성
      • 예제 14.3 최종 문자열 클래스
      • 동작 방법
      • 연습문제
    • 정리
  • 15장 완전한 OOP 예제 두 개
    • 연결 리스트 소개
      • 노드 설계
      • 간단한 연결 리스트 구현
      • 알파벳 순서 리스트
      • 예제 15.1 이름을 알파벳 순서로 정렬
      • 동작 방법
      • 메모리 누수 처리
      • C++11만 지원: 삭제를 위해 스마트 포인터 사용
      • 칼럼: 재귀 호출과 반복 비교
      • 연습문제
    • 하노이의 탑, 애니메이션 추가
      • mystack 클래스 설계
      • mystack 클래스 사용
      • 예제 15.2 움직이는 타워
      • 동작 방법
      • 연습문제
    • 정리
  • 16장 STL을 사용한 손쉬운 프로그래밍
    • 리스트 템플릿 소개
      • 칼럼: C++에서 템플릿 작성하기
      • 리스트 클래스 생성과 사용
      • 반복자 작성과 사용
      • C++11만 지원: for each
      • 칼럼: 포인터와 반복자
      • 예제 16.1 STL 정렬된 리스트
      • 동작 방법
      • 지속적으로 정렬돼 있는 리스트
      • 연습문제
    • RPN 계산기 설계
      • 칼럼: 폴란드식 표기법에 대한 간단한 역사 이야기
      • RPN을 위해 스택 사용
      • 일반화된 STL 스택 클래스 소개
      • 예제 16.2 역폴란드 계산기
      • 동작 방법
      • 연습문제
    • 꺾쇠의 올바른 해석
    • 정리
  • 17장 상속: 물려받은 것들
    • 하위 클래스를 만드는 방법
      • 칼럼: 왜 ‘공용(public)’ 기본 클래스인가?
      • 예제 17.1 FloatFraction 클래스
      • 동작 방법
      • 연습문제
    • FloatFraction 클래스에서의 문제
    • C++11만 지원: 기본 클래스 생성자 상속
      • 예제 17.2 완전한 FloatFraction 클래스
      • 동작 방법
      • 연습문제
    • 보호받는 멤버
    • 객체 포함
    • 클래스 계층 구조를 통한 안전한 상속
    • 정리
  • 18장 다형성: 객체 독립성
    • FloatFraction 클래스에 대한 다른 접근 방법
    • 우리를 구원해줄 가상 함수!
      • 칼럼: 가상 함수를 쓰는 비용은?
      • 예제 18.1 수정된 FloatFraction 클래스
      • 동작 방법
      • 연습문제
    • C++11만 지원: 명시적 오버라이딩 요구
    • ‘순수 가상’과 기타 추상화 관련 사항
    • 추상 클래스와 인터페이스
    • 객체지향과 I/O
      • 끝없이 확장 가능한 cout
      • 다형적이지 않은 cout
      • 예제 18.2 진짜 다형성: Printable 클래스
      • 동작 방법
      • 연습문제
    • 마지막 한마디(혹은 두 마디)
    • 진짜 마지막 한마디
    • 정리
  • 부록 A 연산자
    • 영역(::) 연산자
    • sizeof 연산자
    • 데이터형을 변환하는 오래된 방법과 새로운 방법
    • 정수형과 부동소수점 나눗셈
    • 비트 단위 연산자(&, /, ^,~, <<, >>)
    • 조건 연산자
    • 할당 연산자
    • 연결(,) 연산자
  • 부록 B 데이터형
    • 데이터형의 정밀도
    • 숫자 리터럴의 데이터형
    • 문자열 리터럴과 이스케이프 문자열
    • 부호가 있는 정수를 위한 2의 보수 표기법
  • 부록 C 문법 요약
    • 기본 표현식 문법
    • 기본 명령문 문법
    • 제어 구조와 분기(branch) 명령문
    • if-else 명령문
    • while 명령문
    • do-while 명령문
    • for 명령문
    • switch-case 명령문
    • break 명령문
    • continue 명령문
    • goto 명령문
    • return 명령문
    • throw 명령문
    • 변수 선언
    • 함수 선언
    • 클래스 선언
    • 열거형 선언
  • 부록 D 전처리 지시어
    • #define 지시어
    • ## 연산자(결합)
    • defined 함수
    • #elif 지시어
    • #endif 지시어
    • #error 지시어
    • #if 지시어
    • #ifdef 지시어
    • #ifndef 지시어
    • #include 지시어
    • #line 지시어
    • #undef 지시어
    • 미리 정의된 상수
  • 부록 E ASCII 코드
  • 부록 F 표준 라이브러리 함수
    • 문자열(C 문자열) 함수
    • 데이터 변환 함수
    • 단일 문자 함수
    • 수학 함수
    • 난수 관련 함수
    • 시간 관련 함수
    • strftime 함수를 위한 형식
  • 부록 G I/O 스트림 객체와 클래스
    • 콘솔 스트림 객체
    • I/O 스트림 조작기
    • 입력 스트림 함수
    • 출력 스트림 함수
    • 파일 I/O 함수
  • 부록 H STL 클래스와 객체
    • STL 문자열 클래스
    • <list> 템플릿
    • <stack> 템플릿

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

 1쇄 오류/오탈자 

[ p93 예제 2.5 9행 ]
1을 → 2를

[ p93 예제 2.5 12행 ]
2일 때 → 3일 때

[ p603 ]
들어가며 → 찾아보기

[ p. 271 2행 ]
다중 모듈을 사용gkaus 작업을 → 다중 모듈을 사용할 경우