이 항목에선 Jan Chrisiaan van Winkel 이라는 학생이 제공한 예제에서 어떤 실수가 있는지 살펴본다. 1 ) 다음 소스를 보고, 어디가 문제인지 지적해보라. #include using namespace std; class A { public: A( const string s ) { /* ... */ } string f() { return "hello, world"; } }; class B : public A { public: B() : A( s = f() ) { } private: string s; }; int main( void ) { B b; return 0; } 난 이 문제를 보고, 재석이와 함께 고민했었다. 어느 부분이 문제일거 같다는 느낌(?)이 들었지만, 정확하게 지적하지 못했..
책 정리 검색 결과
예외 명세가 가치가 있는가? 이 질문을 전제로 생각한다면, .. 많은 생각들을 할 수 있을 것이다. 1 ) 예외 명세를 위반하면 어떤 일이 생길까? C++ 기능에 깔린 기본적인 근거를 논하라. 내가 알고 있는 것은 예외 명세를 위반시키면, unexpected 핸들러가 호출 되어지게 된다. 인데, MSVC2005 에서 테스트를 해봐도 작동 되지 않는다. 테스트 코드 #include class A { public: void Darw() throw( int ) { throw A(); } }; void f() { std::cout f(); return 0; } 4 ) 예외 명세는 무엇이고, 하는 일은 무엇인가? 엄밀하게 서술하라. 예외 명세는 "무슨 무슨 예외를 던지겠다" 라고 정하는 것이고, 하는 일은, "지..
예외 안전성을 추구할 가치가 있는가? 어떻게 이런 질문을 할 수 있을까 한다. "추구할 가치가 있는가?" .. 나는 단연코 추구할 가치가 있다고 생각한다. 여러가지가 있지만, 에러가 한번 터졌다 하면, 어디서 부터 봐야 하는지 난감할 때, 이 때문에 나는 단연코 추구해야 한다고 생각한다. 어느정도 알고 있을 때의 코딩과 그냥 막무가네로 찾아야 하는 코딩은 분명 차이가 있기 때문이다. 이번 항목은 "추구할 가치가 있는가?" 로 생각하는 논쟁에 대해서 정리하는 항목이라 할 수 있겠다. 1 ) Abrahams의 예외 안전성 보장들을 강략히 정의하라. 기본 보장(basic guarantee) : 자원 누수는 일어나지 않으며, 연산 실패된 객체의 파괴가 가능하다는 보장, : 쉽게 말해서 RAII 를 들 수 있겠다..
제일 싫어하는 try 와 catch 이다. 사용해 본적이 별로 없어서인지 친근하지 않을 뿐더로, 알아야 할 것이 산떠미 처럼 쌓여(.. C++ 이 원래 그렇지만 )있으니, 손 댈 때도 조심해야 할 것이다. 1 ) try 블록 이란? 코드를 보자. #include #include int main( void ) { bool some_condition = true; bool some_other_condition = true; try { if( some_condition ) { throw std::string( "this is a string" ); } else if( some_other_condition ) { throw 42; } } catch( const std::string& rError ) { // s..
이번 항목은 항목 9에서 더 생각해 봐야 할 것 들을 이번 항목에서 다룬다. 이번 항목에선 "export의 한계"가 있음에도 불과하고, 왜 표준에 들어갔으며, 프로그래머에게 어떤 영향을 미치는지 알아 본다. 1 ) export가 현재 현태로 C++ 표준에 도입된 것은 언제이며, 처음으로 구현된 적은 언제인가? 템플릿에 관한 역사 1988년 10월, 비야네 스트롭스트룹이 초기 C++ 템플릿 설계를 발표 1990년, 마거릿 엘리스(Margaret Ellis)와 비야네 스트롭스트룹은 "The Annotated C++ Reference Manual"을 출판하였고, 거기에 템플릿의 전체 명세와 설명을 포함시켰다. 1994년, Stepanov가 STL을 위원회에 제시했다. 1995년, STL은 표준안으로 채용 되었..
"export의 한계"라 표현한 것 보면, 무엇인가 기대한것에 미치지 못한다는 의미를 갖고 있다고 추측이 된다. 그런데 이 export 는 무슨 export 일까? 바로 템플릿의 export 이다. .. export 는 템플릿 말고, 몇개 더 있는거 같던데(라이브러리 만들때, 아니였나 만들어 본적이 없어서..), 이번 항목은 "템플릿의 export 함계"라고 말해도 좋을 듯 싶다. 질문으로 논쟁을 유도해 보자. 1 ) 템플릿의 "포함 모형"이 뜻하는 바는 무엇인가? ... 부스트의 hpp 같은 녀석들이랄까? 헤더 파일에 정의도 다 포함된 녀석들을 뜻한다. 대표적인 예로 stl 을 들 수 있겠다. 2 ) 템플릿의 "분리 모형"이 뜻하는 바는 무엇인가? .h 와 .cpp 로 헤더파일과 정의 부분을 나누어서,..
최근댓글