12월, 2021의 게시물 표시
{{ label!='' ? 'Label : ' : (q!='' ? '검색 : ' : '전체 게시글') }} {{ label }} {{ q }} {{ ('('+(pubs|date:'yyyy-MM')+')') }}

[C++] The C++ Programming Language: 2. A Tour of C++: The Basics (2)

 2.4.3 Error Handling   에러 핸들링은 언어 기능의 한참 너머에, 프로그래밍 기법과 도구들까지 영향을 줄 수 있는 거대하고 복잡한 주제입니다. 하지만 C++는 이를 도울 수 있는 몇 가지 기능들을 제공하죠. 자료형 체계도 역시 그 스스로의 역할을 하고 있습니다. 내장 자료형과 구문들을 이용해서 힘겹게 응용프로그램을 작성하는 것보다는, 더 많은 자료형들과 알고리즘들을 적절히 개발하는 것이 더 좋죠.    이는 우리의 프로그래밍을 단순화시킵니다. 실수할 여지를 줄여주죠. 또한 컴파일러가 에러들을 잡아낼 기회 역시 부여합니다. 대부분의 C++ 구조는 효율적인 추상화와 우아한 구현 및 설계에 집중합니다. 이러한 모듈화와 추상화의 효과 중 하나는 런타임 에러를 감지하는 지점과 이를 처리하는 지점을 분리할 수 있다는 점입니다. 프로그램이 커질수록, 라이브러리가 확장될수록, 에러를 처리하기 위한 표준은 중요해집니다.    2.4.3.1 Exceptions   Vector 예제를 다시 떠올려보죠. 2.3.2절의 벡터 범위를 넘어가는(out-of-range) 요소에 접근하려고 할 때 우리가 어떻게 해야할까요? Vector의 작성자는 이 경우에 사용자가 어떠한 것을 하려고 하는 것인지 알 수 없습니다. (심지어, 어떤 프로그램에서 vector가 실행되고 있는지도 알 수 없죠) Vector의 사용자는 지속적으로 문제를 감지할 수 없습니다. (만약 가능했다면, 애초에 범위를 벗어나는 접근을 하지도 않았겠죠. 문제가 어디서 발생하는지 알기 어렵다는 것입니다.-옮긴 이)   이 문제의 해결책은 Vector 구현자가 out-of-range 접근을 시도했을 때 이를 감지하고 사용자에게 말해주는 것입니다. 사용자는 이를 가로채 적절히 행위할 수 있죠. 예를 들어, Vector::operator[]()는 out-of-range 접근을 시도했을 때 이를 감지하고 out_of_range 예외를 던집니다. 1 2 3 4 5 double &  Vector:: operator

[C++] The C++ Programming Language: 2. A Tour of C++: The Basics (1)

이미지
2. A Tour of C++: The Basics 2.1 Introduction   이 챕터와 다음 세 챕터의 목표는, 잠시 세부사항은 접어두고 C++가 진정 무엇인지 여러분들에게 소개하는 것입니다. C++의 메모리와 컴퓨팅, 프로그램에 코드를 구성하는 기초 메커니즘 등에 대한 모델 및 C++의 표기법 등을 이야기할 것입니다. C++는 절차지향 프로그래밍이라고도 불리는 C에서 볼 수 있는 많은 스타일들을 제공합니다. 챕터 3은 C++의 추상화 메커니즘을, 챕터 4와 챕터 5는 표준 라이브러리 기능을 소개할 것입니다.   전제는 여러분들이 프로그래밍을 이미 해봤어야 한다는 것입니다. 만약 그렇지 않다면, 다른 책인 Programming: Principles and Practice Using C++ [Stroustrup, 2009]을 먼저 읽어보시길 권합니다. 여러분들이 이전에 프로그래밍을 해봤더라도, 여러분들이 사용했던 언어는 아마 C++가 제공하는 것과 꽤 다를 것입니다. 앞으로 펼쳐질 "초고속 투어"가 조금 혼란스럽다면, 좀 더 자세한 내용을 다루는 챕터6으로 건너 뛰도록 하세요.   이 C++ 투어는 초기에도 여러분들이 풍부한 기능들을 사용할 수 있도록 만들어줌으로써, 엄격한 상향식(bottom-up) 언어 설명으로부터 구제해줍니다. 예를 들어, 반복문은 챕터 10까지 이야기하지 않습니다. 비슷하게 클래스, 템플릿, 자유 공간(free-store, 힙) 사용, 표준 라이브러리 등에 대한 서술은 많은 챕터들에 퍼져 있습니다. 하지만 표준 라이브러리 자료형인 vector, string, complex, map, unique_ptr, ostream 등은 코드 예제를 강화하기 위해 어디든지 필요하면 쓰일 것입니다.   비유적으로, 뉴욕이나 코펜하겐과 같은 도시로 관광을 떠난다고 생각해보죠. 몇 시간 동안, 여러분들은 관광 명소들을 둘러보고, 그 역사들을 듣고, 다음에 무얼 볼지에 대한 이야기들을 듣죠. 허나 여러분들은 여전히 그 도시를 완전히