*이 포스팅은 개인 학습을 위해 내용을 정리한 것이 목적입니다.
3.1 namespace std
c++표준라이브러리 식별자 사용하는 방법
1) 명시적으로 namespace의 이름을 적어주는 방법
ex) std::cout << ..;
2) using선언문 사용하기.
ex) using std::cout;
3) using지시자사용하기
ex) using namespace std;
3.2 헤더파일
- 표준 헤더파일은 확장자가 없음.
ex) #include <iostream>
#include <string> 등등..
- C표준 헤더파일도 확장자 필요없음. 대신 앞에 c가 붙음
ex) #include<string.h> -> #include<cstring>
3.3 예외와 에러처리
3.3.1 기본클래스
base클래스 : exception클래스
1) C++을 지원하기 위한 예외
- bad_alloc : new연산 실패시, nothrow버전의 new은 제외
-> bad_alloc이 발생하기 전에 알아서 할당 실패가 발생;;
- bad_cast : dynamic_cast 실패시
-> vc6.0에서 0xe06d7363 에러 발생한다.
- bad_typeid : runtime시, 객체에 대한 실제 타입을 알아내기 위한 typeid연산 실패시
- bad_exception : 예기치 않은 예외 발생시. unexpected()함수를 사용함으로써 가능
* unexpected함수: MSDN에서 terminate or set_unexpected함수를 대신 사용하여 사용자 지정함수를 호
출하라고 권고함. 현재 MS C++예외처리 구현에서 사용되지 않는다고 함.
2) C++표준 라이브러리를 지원하기 위한 예외들
거의 대부분이 logic_error에서 파생됨.
- invalid_argument : 유효하지 않은 인자에 의해 발생되는 에러를 위한 예외클래스.
- length_error : 최대허용사이즈를 넘어가는 작업 시도시 발생.
- out_of_range : 인자값이 유효한 범위를 넘어서는 경우에 발생되는 에러를 의미
- domain_error : 도메인에러를 위한 예외 클래스
- ios_base::failure : 스트림의 상태가 에러 또는 EOF상태인 경우 발생
3) 프로그램범위를 벗어나는 에러를 지원하기 위한 예외
- range_error : 내부계산 중, 발생하는 범위 에러를 위한 클래스
- overflow_error : 산술 오버플로우 발생시
- underflow_error : 산술 언더플로우 발생시
4) C++표준 라이브러리에 의해서 발생되는 예외들
3.3.3 표준예외의 전달
사용자가 직접 만들은 라이브러리나 프로그램에서 ,던지는 예외
3.4 할당자
- 메모리의 할당과 해제를 위한 객체.
-> 프로그래머가 메모리를 얻는 방식을 추상화 함
1) 메모리를 불러오는 인터페이스 및 관련 메소드 구현의 총칭
2) 다른타입의 포인터로 인한 문제를 위해 제안됨
- new를 overloading하는것과의 차이
new overloading은 전 영역에 대해 side-effect가 발생. 단일 전략만 가능
STL 할당자는 코드 수정 없이 다양한 전략 사용 가능
(참조 : https://kldp.org/node/109031)
- STL할당자와 할당 전략에 관한 링크
ViperWiki : http://www.viper.pe.kr/cgi-bin/moin.cgi/STL/%ED%95%A0%EB%8B%B9%EC%9E%90
참조 : C++ Standard Library - A tutorial and Reference
댓글