More Exceptional C++ 의 7단원 "그 밖의 주제들" 은 대체로 난이도가 낮고, 많이 알려져 있는 사실들이 있어서, 술술 읽고 넘어간다. 이번 항목은 잘 사용하지 않았던 네임스페이스를 지금에서야 사용하면서 그 편리함에 탄복했던 나에게 절실히 필요했던 항목이기도 하다. C++ 에서 컴파일러가 이름을 찾는 규칙에 대해서는 "The C++ Programming Language" 에서 자세히 나와 있어, 언제 기회가 생기면 정리하도록 하고, 우선 More Exceptional C++ 에서 나온 주제를 정리하도록 한다. 잠깐, 꼭 이름 찾기 규칙을 알고 넘어가야 할 것이다. 질문 using 선언과 using 지시자는 무엇이고, 어떻게 사용되는가? 둘 중 순서에 영향을 받는 것은? 해설 C++ 표준화..
책 정리/More Exceptional C++ 검색 결과
이번 항목은 이름을에 별명을 지어 줄때 쓰는 typedef 에 대한 이야기이다. 저번 Exceptional C++ 에서 다루지 않았던 내용이라 새로웠지만, Effectivce C++ 에서 다루었던 내용이고, 평소에 그 유용성과 좋지 않을 때를 알고 있떤 터러, 정리 차원에서 다시 정리한다. 질문 1. typedef를 사용하는 이유는? 생각나는 대로 이유/상황을 적어 보자. 질문 2. STL 컨테이너를 사용하는 코드에서 typedef를 사용하면 왜 좋을까? 해설 질문 1 typedef를 사용 하는 이유는? 우선 코드가 짦아져서 좋고, 함수 포인터 등을 쓰려고 할 때 편하며, 또한 템플릿 클래스에 사용하기 용이하며, 한가지 타입을 한번에 변환하고자 할때 편하다. 그리고 그 타입에 대한 의사 전달에 가능하다...
해당 이야기에 대해서 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 연산 중 아무거나 예외를 발생시킬 수 있다면, 이 클래스의 구조를 바꾸지 않고, ..
최근댓글