이번 항목은 생성자에서 어떻게 예외가 발생 될 수 있으며, 생성자에서 예외가 발생한것이 어떤 의미인지 살펴 보는 항목이다. 예제 코드 // 예제 1 class C : private A { B b; }; // 예제 2 { C c; } 질문 1. 예제 1에서 생성자에서 예외가 발생하면 어떻게 잡을 수 있을까? 질문 2. 예제 2에서 객체의 수명을 설명 할 수 있는가? 해설 1. 예외 발생 어떻게 잡을 수 있는가? 질문에 대해서만 답하자면, 예외를 잡기 위해서 try catch 문을 사용 해야 할것이다. 코드로 옮기자면, // 예제 1 class C : private A { public: ~C() { } C() try : A() , b() { } catch( ... ) { } private: B b; }; 이..
책 정리 검색 결과
반드시 읽어 볼 만한 책인것을 확신하며, 꼭 읽어보길 바란다. 번역 또한 깔끔하게 되어서, 읽는데는 문제가 없다. 이해하는것에 있어서는 기본 지식을 무척이나 많이 필요하기 때문에, .. 어리둥절하게 만드는 경우가 많으니, 비야네 책과 같이 보면 큰 도움이 될 듯 싶다. 차례 1. 일반 프로그래밍과 C++ 표준 라이브러리 항목 1 : 반복자(Iterator) 항목 2 : 대·소문자 구분 없는 문자열 - 파트 1 항목 3 : 대·소문자 구분 없는 문자열 - 파트 2 항목 4 : 최대 재사용 가능한 일반 컨테이너 - 파트 1 항목 5 : 최대 재사용 가능한 일반 컨테이너 - 파트 2 항목 6 : 임시 개체들 항목 7 : 표준 라이브러리의 사용(혹은, 다시 보는 임시 개체) 2. 예외 안전 문제와 기술들 여담 ..
예제코드 #include #include #include int main( void ) { std::ifstream infile ( "old.txt",std::ifstream::binary); std::ofstream outfile ("new.txt",std::ofstream::binary); // infile 용의 파일 크기 구함 infile.seekg(0,std::ifstream::end); long size=infile.tellg(); infile.seekg(0); // char 형태로 메모리 생성 std::vector buf( size ); // 파일 읽어서 buffer 에 쌓아 둠 infile.read( &buf[0], size); // 그리고 그것을 outfile 에 씀 outfile.writ..
지긋지긋하고 힘빠지는 예외안전성 생각하기의 막바지 항목이다. 이번 항목은 아주 중요한 질문을 던진다고 한다. C++ 표준 라이브러리가 예외에 안전한가? .... 결론부터 말하자면, 예외에 안전하다. 이것은 C++ 표준 사항에서 규정된 사항인데, 아래 규정을 보도록 하자. 표준 컨테이너에서 반환되는 모든 반복자는 예외에 안전하고 예외를 던지지도 않으며 복사 될 수 있다. 모든 표준 컨테이너는 모든 연산에 대한 기본 보증을 구현해야 하며, 항상 파괴와 예외가 있어도 견고한 상태를 유지 할 수 있어야 한다. 모든 컨테이너는 또한 반드시 모든 연산에 대해서 강한 보증을 구현해야 한다. 이것의 의미는 수행-또는-되물림(commit-or-rollback) 의 논리를 갖어야 한다는 의미이다. 성공하거나, 그 어떤 영..
최근댓글