E D R , A S I H C RSS

More EffectiveC++

ANSI C++에 대한 약간은 수준있는 내용을 다루는 책. EffectiveC++ 의 추가적인 내용이다.

1. 소개

- wowbook 인용

  • ANSI C++에 대한 제반적인 내용을 깔끔한 필체로 쉽게 쉽게 다루고 있다. 명확한 개념 설명이 돗보인다. 프로그램과 디자인 능력을 향상시키는 35개의 방법이 제시되어 있다. 배치, 가상 생성자, 포인터 레퍼런스 카운팅, 프락시 클래스, 더블 디스패치와 같은 C++의 보다 세련된 기술에 대해 설명하고있다.
  • 이 책의 주요 내용

~cpp 
- 포인터와 레퍼런스와의 차이 
- C++ 스타일 캐스트 
- 불필요한 디폴트 구성자는 제외 
- 사용자 정의의 변환 함수 사용 
- 증가 연산자와 감소 연산자의 전위와 후위 형태의 구별 
- new와 delete의 의미 차이 
- 자원 낭비를 막기위한 소멸자 사용 
- 생성자의 자원 낭비를 막음 
- 가상 함수 호출과 파라미터 패스의 차이 이해 
- 레퍼런스를 이용한 예외상황 캐취 
- 예외상황 명확화 사용 
- 예외상황 핸들링 비용 이해 
- 20/80 법칙 
- 예상된 계산 비용 청산 
- 임시 객체의 발생 이해 
- 가상 함수 비용, 다중 계승, 가상 베이스 클래스와 RTTI 
- 구조체 가상화 
- 클래스 객체수의 제한 
- 힙 베이스 객체 요구와 금지 
- 스마트 포인터 
- 레퍼런스 카운팅 
- 프락시 클래스 
- 하나 이상의 객체에 대한 가상 함수 생성 
- 향후 프로그램 
- 리프가 없는 클래스 추상 생성 
- 동일 프로그램상에서 C++과 C의 결합 

2. Project About That

  • 작성자:류상민(neocoin)

  • More Effective C++ 의 요약
  • 목표: 자료로 이용 할수 있을 정도의 정보 전달
  • 진행 일정
    시작 2002.01.14 알바 유지 보수로 예정보다 늦게 시작
    처음 목표 2002.01.31 18장 종료
    1차 연기 2002.02.15 28장 종료
    2차 연기 2002.02.28 32장 종료
    3차 연기 2002.03.08 35장 종료
  • . 2002.03.21 최종 기록 :
    • 원서를 보세요. 보시다 이상한 부분만 같이 생각을.
    • 이 문서는 ZeroPage 회원들을 위한 내부 문서입니다. 회원 이외에 저작권 문제에 소지가 되는 문제에 관해서 책임을 질수 없습니다.
    • 시간이 없으니, 차후 문서를 다시 다듬는 것은 2002년 여름 방학중에 할 생각입니다.

2.1. Link

2.1.1. Basic

MoreEffectiveC++/Basic S
  • Item 1: Distinguish between pointers and references. - Pointer와 Reference구별해라.
  • Item 2: Prefer C++ style casts.- 스타일의 형변환을 권장한다.
  • Item 3: Never treat arrays polymorphically - 절대로! 클래스 간의 다형성을 통한 배열 취급을 하지 말라
  • Item 4: Avoid gratuitous default constructors. - 암시적으로 제공되는 기본 생성자를 피하라. 혹은 기본 생성자의 모호성을 파악하라.

2.1.2. Operator

MoreEffectiveC++/Operator S
  • Item 5: Be wary of user-defined conversion functions. - 사용자 정의 형변환(conversion) 함수에 주의하라!
  • Item 6: Distinguish between prefix and postfix forms of increment and decrement operators. - prefix와 postfix로의 증감 연산자 구분하라!
  • Item 7: Never overload &&, ||, or ,. - 절대로! &&, ||, ',' 이 연산자들을 overload 하지 말아라
  • Item 8: Understand the differend meanings of new and delete - new와 delete가 쓰임에 따른 의미들의 차이를 이해하라.

2.1.3. Exception

MoreEffectiveC++/Exception, S before 12
  • Item 9: Use destuctors to prevent resource leaks. - 자원이 새는걸 막는 파괴자를 사용해라.
  • Item 10: Prevent resource leaks in constructors. - 생성자에서 자원이 세는걸 막아라.
  • Item 11: Prevent exception from leaving destuctors. - 파괴자로 부터의 예외 처리를 막아라.
  • Item 12: Understand how throwing an exception differs from passing a parameter or calling a virtual function
    - 가상 함수 부르기나, 인자 전달로 처리와 예외전달의 방법의 차이점을 이해하라.
  • Item 13: Catch exception by reference - 예외는 참조(reference)로 잡아라.
  • Item 14: Use exception specifications judiciously. - 예외를 신중하게 사용하라.
  • Item 15: Understand the costs of exception handling. - 예외 핸들링에 대한 비용 지불 대한 이해

2.1.4. Efficiency

MoreEffectiveC++/Efficiency, T
  • Item 16: Remember the 80-20 rule. - 80-20 규칙을 기억해라.
  • Item 17: Consider using lazy evaluation - lazy evaluation의 쓰임에 대하여 생각해 보자.
  • Item 18: Amortize the cose of expected computations. - 예상되는 연산의 값을 계산해 두어라.
  • Item 19: Understand the orgin of temporary objects.- 임시 객체들의 기본을 이해하자.
  • Item 20: Facilitate the return value optimization - 반환되는 값을 최적화 하라
  • Item 21: Overload to avoid implicit type conversions.- 암시적(implicit) 형변환의 overload를 피하라
  • Item 22: Consider using op= instead of stand-alone op.- 혼자 쓰이는 op(+,-,/) 대신에 op=(+=,-=,/=)을 쓰는걸 생각해 봐라.
  • Item 23: Consider alternative libraries. - 라이브러리 교체에 관해서 생각해 봐라.
  • Item 24: Understand the costs of virtual functions, multiple ingeritance, virtual base classes, and RTTI
    - 가상 함수, 다중 상속, 가상 기초 클래스, RTTI(실시간 형 검사)에 대한 비용을 이해하라

2.1.5. Techniques1of2

MoreEffectiveC++/Techniques1of3, S or T
  • Item 25: Virtualizing constructors and non-member functions. - 생성자와 비멤버 함수를 가상으로 돌아가게 하기.
  • Item 26: Limiting the number of objects of a class - 객체 숫자 제한하기.
  • Item 27: Requiring or prohibiting heap-based objects. - Heap영역을 사용하는 객체 요구하기 or 피하기.
  • Item 28: Smart pointers - 똑똑한 포인터:스마트 포인터

2.1.6. Techniques2of2

MoreEffectiveC++/Techniques2of3, T
  • Item 29: Reference counting - 참조 세기
  • Item 30: Proxy - 대리자

2.1.7. Techniques2of2

MoreEffectiveC++/Techniques3of3, T
  • Item 31: Making functions virtual with respect to more than one object. - 하나 이상 객체에 대응하는 함수를 virtual(가상)으로 동작 시키기

2.1.8. Miscellany

MoreEffectiveC++/Miscellany T
  • Item 32: Program in the Future tense - 미래를 대비하는 프로그램
  • Item 33: Make non-leaf classes abstract. - 유도된 클래스가 없는 상태의 클래스로 추상화 하라.
  • Item 34: Understand how to combine C++ and C in the same program. - 같은 프로그램에서 C++와 C를 혼합하는 법 이해해라.
  • Item 35: Familiarize yourself with °the language standard. - 언어 표준에 친해져라.

2.1.9. Appendix

MoreEffectiveC++/Appendix : 한글화의 필요성을 못느끼며, 위키화만 시켜놓음
  • Recommended Reading
  • An auto_ptr Implementation

2.2. 세미나용 항해 지도

  • MoreEffectiveC++/C++이 어렵다?

2.3. Log

  1. 2002.02.09 볼수록 절실한 내용 투성이 이다. Efficiency의 부분이 가장 중요하다고 뽑았는데, 다음 Technicque 파트는 Efficiency를 비웃고 있다. 각 장마다 거의 두세배에 다라는 양과 더불어, "C++에서 알고 싶었던 것이 여기 다 모여 있구나" 하는 생각이 든다. 내용이 너무 많아서 어쩔수 없이 다시 요약 체제로 가야 겠다.
  2. 2002.02.15 드디어 스마트 포인터를 설명할수 있는 skill을 획득했다. 다음은 Reference counting 설명 skill을 획득해야 한다. Reference counting은 COM기술의 근간이 되고 있으며, 과거 Java VM에서 Garbage collection을 수행할때 사용했다고 알고 있다. 물론 현재는 Java Garbage Collector나 CLR이나 Tracing을 취하고 있는 것으로 알고 있다. 아. 오늘이 프로젝트 마지막 시점으로 잡은 날인데, 도저히 불가능하고, 중도 포기하기에는 뒤의 내용들이 너무 매력있다. 칼을 뽑았으니 이번달 안으로는 끝장을 본다.
  3. 2002.02.17 Reference Counting 설명 스킬 획득. 이제까지중 가장 방대한 분량이고, 이책의 다른 이름이 More Difficult C++ 라는 것에 100% 공감하게 만든다. Techniques가 너무 길어서 1of2, 2of2 이렇게 둘로 쪼갠다. (세개로 쪼갤지도 모른다.) 처음에는 재미로 시작했는데, 요즘은 식음을 전폐하고, 밥 먹으러가야지. 이제 7개(부록까지) 남았다.
  4. 2002.02.24 31장이 이제 2장 정도 밖에 남지 않았다. 이번주는 이런일 저런일 핑계되면서 못했다고 위안하는데, 정말 찹찹하네. 거의 4일 정도 지체되고 있으니. 다시 마음을 가다듬에 내일 완료해야지.
  5. 2002.02.25 31장 종료. 이제 이책의 핵심들은 끝이 난듯.
  6. 2002.03.02 33장 초안 종료. 직전에서 좌절하지 않으리.
  7. 2002.03.04 34장 초안 종료
  8. 2002.03.08 문서화 종료 ( 1~35장 한글화 or 요약, Appendix와 index는 제외)
    • 아, 드디어 끝이다. 사실 진짜 번역처럼 끝을 볼려면 auto_ptr과 Recommended Reading을 해석해야 하겠지만 내마음이다. 더 이상 내용이 없다고 하면 맞을 까나. 휴. 원래 한달정도 죽어라 매달려 끝낼려고 한것을 한달 반 좀 넘겼다. (2월은 28일까지란 말이다. ^^;;) 이제 이를 바탕으로한 세미나 자료만이 남았구나. 1학기가 끝나고 방학때 다시 한번 맞춤법이나 고치고 싶은 내용을 고칠것이다. 보람찬 하루다.

3. Thread

  • 대단대단..~ 공을 들이더니 드디어 한바퀴 돌으셨군. 축하드리네.. --석천


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.1947 sec