auto_ptr 클래스 1. auto_ptr클래스는 예외가 발생했을 경우 리소스릭을 피하기 위해 STL이 제공하는 스마트 포인터의 한 종류이다. 즉 자신이 가리키는 객체에 대한 소유자로서 행동하는 포인터이다. auto_ptr이 파괴된다면 소유하고 있던 객체도 자동으로 파괴되는 것이다. 통상적으로 auto_ptr클래스는 할당 연산자(=)를 통해서 초기화를 할 수 없다. ex) std::auto_ptrptr1(new classa); std::auto_ptrptr2(new classa); ptr2 = ptr1; //auto_ptr을 할당하면 ptr2가 소유한 객체를 소멸하게 되고 소유권이 ptr1에서 ptr2로 이전된다. // ptr1 null상태 2. 위험성있는 코드 ex1) template void bad_print(std::a.. 더보기 Pair 클래스 1. Pair 클래스는 두 개의 값을 한 개의 단위로 관리하기 위해 제공된다. 컨테이너 클래스인 map과 multimap은 key/value 쌍이라고 불리는 원소를 다루기 위해서 pair를 사용한다. pair를 사용하는 다른 경우는 두가지의 값을 반환하고자 하는 함수에서 사용될 수 있다. ex) void f(std::pair); void g(std::pair); void foo{ std::pairp(42,"hellow"); f(p); // 디폴트 복사 생성자 호출 g(p); // 템플릿 버전의 복사 생성자 호출 2. make_pair() 함수 - 타입을 명시적으로 선언하지 않고도 pair값을 생성할 수 있도록 도와주는 유용한 함수이다. std::pair(42,'@'); std::make_pair(42,'.. 더보기 C++ 에러와 예외 처리 1. 메모리 할당을 위한 new가 실패하였을때 nothrow 버전의 new를 사용하는 경우를 제외하고는 무조건 bad_alloc 예외 클래스를 던진다. 2. dynamic_cast -> bad_cast 3. typeid -> bad_typeid 4. 예기치않는예외 -> bad_exception 5. c++ 표준 라이브러리를 지원하기 위한 예외들 a) 유효하지 않은 인자에 의해 발생되는 에러를 위한 invaild_argument 예외 클래스 ex) bitset(비트 배열)을 0,1이 아닌 문자로 초기화했을 경우 b) 최대 허용 사이즈를 넘어가는 어떤 작업을 시도할 경우 발생되는 에러를 위한 length_error예외 클래스 ex) 스트링에 너무 많은 문자를 추가할 경우 c) 인자값이 유효한 범위를 벗어나는.. 더보기 이전 1 ··· 266 267 268 269 270 271 272 ··· 274 다음