본문 바로가기

책 정리/More Effective C++ 1판

(38)
항목 35 : C++ 언어의 최신 표준안과 표준 라이브러리에 대해 익숙해지자 읽어보자
항목 34 : 한 프로그램에서 C++와 C를 함께 사용하는 방법을 이해하자 이해못했음
항목 33 : 상속 관계의 말단에 있지 않은 클래스는 반드시 추상 클래스로 만들자 어렵다.
항목 32 : 미래지향적인 프로그래머가 되자 이유 1. 소프트웨어는 항상 변화하기 때문이다. 구현 방법 1. 끊임없이 공부 해라; 2. 대입과 복사생성은 모든 클래스에 대해 처리해 두어야 한다. 3. 변경이 필요할 때 그 변경의 영향이 제한된 부분만 미치도록 코드를 설계한다. 4. 힘 닿는데까지 캡슐화 한다. 5. 구현에 관련된 상세한 부분은 외부에 노출시키지 않는다. 6. 개발 도구가 지원하는 기능에 맞추어 파일 범위(file-scope)의 정적 변수나 정적 함수를 선언하도록 한다. 7. 가상 기본 클래스가 필요한 설계는 피하는것이 좋다. 명언 아리송하면 int의 동작원리대로 만들지어다(when in doubt, do as the ints do) 클래스 설계가 점점 어려워 지는 시점이다.
항목 31 : 함수를 두 개 이상의 객체(타입)에 대해 가상 함수처럼 동작하도록 만들기 .. 이것도 좀 어렵다 잠시 보류
항목 30 : 프록시(Proxy) 클래스 좀 어렵다. 잠시 보류;
항목 29 : 참조 카운팅(reference Counting) 참조 카운팅 어떨때 사용 하는가? 1. 상대적으로 많은 객체들이 상대적으로 적은 값을 공유 할 때 2. 어떤 객체값을 생성하거나 소멸시키는데 많은 비용이 들거나 메모리 소모가 클 때 구현방법 1. Count 변수를 두어, 포인터 복사, 포인터 대입, 포인터소멸시 이 변수의 값을 변경한다. 개인적인 생각 효율이 가장 중요하다?? 어찌 되었건 스마트 포인터를 만들어 봐야 한다. 못하면, 할수 없는게 더 많이 생기기 때문이다.
항목 28 : 스마트 포인터(Smart Pointer) 이유 1. 영리한 녀석들은 항상 좋기 때문이다. 구현 방법 벙어리 포인터랑 비슷하게 사용하면서 영리한 동작이 있어야 한다. 1. 메모리 누수를 잡는 기능 2. 역참조 연산자 기능 3. Null 인지 검사 기능 4. 스마트 포인터가 벙어리 포인터로 변환기능 5. 다향성 기능 6. const 기능 주의점 1. 모든것을 벙어리 포인터처럼 구현하는것은 불가능하다.(왜냐면 이건 스마트 포인터기 때문이다) 2. 아무리 좋은 약이라도, 필요하지 않을때 먹으면 독이 되듯이 망각하지 말자. 머리는 항상 냉철하게!