이번 항목은 이름을에 별명을 지어 줄때 쓰는 typedef 에 대한 이야기이다. 저번 Exceptional C++ 에서 다루지 않았던 내용이라 새로웠지만, Effectivce C++ 에서 다루었던 내용이고, 평소에 그 유용성과 좋지 않을 때를 알고 있떤 터러, 정리 차원에서 다시 정리한다. 질문 1. typedef를 사용하는 이유는? 생각나는 대로 이유/상황을 적어 보자. 질문 2. STL 컨테이너를 사용하는 코드에서 typedef를 사용하면 왜 좋을까? 해설 질문 1 typedef를 사용 하는 이유는? 우선 코드가 짦아져서 좋고, 함수 포인터 등을 쓰려고 할 때 편하며, 또한 템플릿 클래스에 사용하기 용이하며, 한가지 타입을 한번에 변환하고자 할때 편하다. 그리고 그 타입에 대한 의사 전달에 가능하다...
More Exceptional C++ 검색 결과
해당 이야기에 대해서 Exceptional C++ 항목 26 ~ 28 에서 정리해 두었다. 참조 : http://www.ikpil.com/709 요약하자면, std 안에 살고 클래스든 구조체든 무엇이든 간에 전방 선언을 해서는 안된다. 이것은 컴파일러와 라이브러리 작성자에게만 해당되는 그들만의 특권이다. 총평 .. 알던 내용이라 그냥 휙~ 휙~ namespace 안에 전방선언해서 쓸수 있겠으나 알 필요도 없고 알아서도 안되는 방법이나 그냥 넘기고, 쓰지 말아야 한다라고 기억하면 된다. 왜냐하면 std 네임스페스를 내 마음데로 했을 경우, ... 그 감당을 할 수 있을 만큼 나는 아직 강하지 못하다. .. 물론 강하다면 쓰여지지 않는게 더 강하다는것을 알게 되겠지만... : )
이번 항목에선 객체를 초기화하는 방법들과 그 차이점에 대한 논의이다. 객체를 초기화 하는 방법으로는 크게 생성자 호출로 인한 초기화 방법과 복사 생성자 호출로 인한 초기화 두가지가 있다. 이 차이를 확실히 알아야지만, 최소한의 최적화(?)와 버그들을 잡을 수 있을 것이라고 나는 생각한다. More Exceptional C++ 의 7단원, 37 항목에서 이 내용에 대해서 자세히 언급하고 있는데, 생각해 볼만한 질문을 두개 던저준다. 질문 1. 생성자 호출로 인한 초기화와 복사 생성자 호출로 인한 초기화의 차이점은 무엇인가? 질문 2. 다음 예제중 생성자 호출로 인한 초기화와 복사 생성자 호출로 인한 초기화를 구분 지어 설명 하라. class T : public S { public: T() : S( 1 )/..
클래스에 있어, 상속은 매우 강력한 기능 중에 한가지 이며, 매우 위험한 기능 중에 한가지 이다. 매우 위험한 기능이라 표현한 이유는 상속에 따른 문제점이 우후죽순처럼 불거지기 때문이다. 어쩔때 보면, 너무 불거저서 모두 빨간색으로 보일 때도 있었다. (.. 잘못된 상속은 그만큼 위험하다는 뜻입니다.) 이번 항목은 이런 상속 중 "is-implemented-in-terms-of" 상속이 무엇이며, 구현 방법 중 어느 것이 더 좋을 지에 대한 논의(일반적인 생활에 논의라는 말은 안쓰이는데, C++ 책에서는 무척 많이 나온다. 곰곰히 생각해 보니, "이야기"는 단방향인거 같고, 상호작용하며 이야기 하여, 결론에 도달하는 말 자체가 "논의"로 쓰기에 딱 좋은거 같다. ) 이다. 질문 1. "is-impleme..
클래스에 있어, 그 클래스 타입에 대한 복사가 이루어 질 경우가 반드시 있게 된다. 이런 복사는 초기에 생선자 호출에서 갖었던 모든 위험성을 다시 한번 더 반복해야 하는 비용을 물어야 한다. 이것은 클래스 설계에 있어 심한 문제 중에 한가지 이다. 이번 항목은 어떠한 클래스라도 복사 할당자(복사 할당 연산자)를 보다 더 견고하게 설계하는 방법을 찾아 가 본다. 이미 이 방법을 아는 사람이 많으므로 자세히 설명하기 보단 요점만 짚고 넘어 가는게 좋겠다. 질문 1 예외 안전성의 일반적인 세 가지 레벨에 대해서 설명하라 질문 2 예외 안전성이 높은 복사 할당자의 표준적인 형태는 무엇인가? 질문 3 다음 클래스에서 T1 이나 T2 연산 중 아무거나 예외를 발생시킬 수 있다면, 이 클래스의 구조를 바꾸지 않고, ..
항목 20에서 문제 해결에 있어 auto_ptr 을 사용하는게 도움이 될까? 란 것인데, 20항목의 해결 코드에서 봤듯이 그런것이다. 그러니 문제를 나열 하자. 문제 : 1 20-2 에 비해서 다음 코드가 더 나은 점은 무엇이며, 아직 남아 있는 예외 안전성이 있다면 설명하라 /// 예제 21-1 // // 헤더 파일 void f( std::auto_ptr a, std::auto_ptr b ); // 구현 파일 f( std::auto_ptr( new T1 ), std::auto_ptr( new T2 ) ); 문제 : 2 문제 1에 있는 예외 안전성을 잡을 수 있고, 다음과 같이 호출 될 수 있는 auto_ptr_new 를 작성하라 /// 예제 21-2 // // 헤더 파일 void f( std::auto..
최근댓글