effective C++

C++/Effective C++

[Effective C++] Chapter 4: Design and Declarations(1)

Item 18 : Make interfaces easy to use correctly and hard to use incorrectly 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 만들자. 좋은 인터페이스는 올바르게 사용하기엔 쉽고 잘 못 사용하기엔 어려워야 한다. 모든 인터페이스에서 이러한 특성을 만족시켜야 한다. 인터페이스가 올바르게 사용되기 위해, 인터페이스는 일관되고 built-in-type과 호환되는 동작을 포함해야 한다. 에러 방지를 위한 방법에는 새로운 type 만들기, type에 대한 operation 제한, object value 제한, 클라이언트의 리소스 관리 책임 제거가 있다. shared_ptr은 custom deleters를 지원한다. 이것은 교차 DLL문제를 방..

C++/Effective C++

[Effective C++] Chapter 3: Resource Management

리소스의 종류에 상관없이, 리소스는 사용이 끝나면 항상 release해야 한다. Item 13 : Use objects to manage resources. 자원 관리에는 객체가 그만. 아래 코드를 살펴보자. Investment* createInvestment();//return ptr to dynamically allocated void f() { Investment *pInv = createInvestment(); ... delete pInv; } 이 코드는 괜찮아 보이지만, 함수 f는 createInvestment 함수를 통해 얻은 오브젝트를 delete하는데 실패할 수 있다. 함수의 중간에 return문이 위치하면 delete가 실행되지 않고, 메모리 누수 문제가 발생한다. 따라서, 함수 f가 d..

C++/Effective C++

[Effective C++] Chapter 2: Constructors, Destructors, and Assignment Operators(2)

Item 9 : Never call virtual functions during construction or destruction 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 않는다. 다음과 같은 코드를 살펴보자. class Transaction{ public: Transaction(); virtual void logTransaction() const = 0; ... }; Transaction::Transaction() { ... logTransaction(); } class BuyTransaction: public Transaction{ public: virtual void logTransaction() const; ... }; class SellTransaction: public Tr..

C++/Effective C++

[Effective C++] Chapter 2: Constructors, Destructors, and Assignment Operators(1)

Item5 : Know what functions C++ silently writes and calls copy constructor, copy assignment, destructor, 그리고 default constructor는 프로그래머가 선언하지 않으면 컴파일러가 선언한다. 이 모든 함수들은 public이고 inline이다. *inline: 호출될 때 일반적인 함수의 호출과정을 거치지 않고 함수의 모든 코드를 호출된 장소에 삽입하는 함수 이 함수들은 필요할 때 생성된다. default constructor와 destructor는 주로 기본 클래스의 생성자, 소멸자 호출과 같은 코드를 컴파일러에 넣을 수 있는 공간을 제공한다. 이 때 생성된 소멸자는 virtual 멤버 함수가 아니다. 컴파일러가 생..

C++/Effective C++

[Effective C++] Chapter1: Accustoming Yourself to C++

Item 1. View C++ as a federation of languages오늘날의 C++는 다중 패러다임 프로그래밍 언어(multiparadigm programming language)로 여러 sublanguage들의 연합체다. 따라서, C++를 사용한 효과적인 프로그래밍 규칙은 C++의 어떤 부분을 사용하느냐에 따라 달라진다. 1) CC++는 C를 기반으로 함.Blocks, statements, the preprocessor, built-in data types, arrays, pointers 등이 C에서 왔다.C만 써도 문제는 없으나 활용할 수 있는 범위가 좁아진다 : no templates, no exceptions, no overloading, ... 2) Object-Oriented C+..

Tuesberry
'effective C++' 태그의 글 목록 (2 Page)