본문 바로가기
Programming/Tips(C++,C#)

Chapter 3. 일반적인 개념

by 곰네Zip 2014. 10. 24.

*이 포스팅은 개인 학습을 위해 내용을 정리한 것이 목적입니다.

 

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

반응형

댓글