설계

    이펙티브 C++(142p ~ 149p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 142p ~ 149p 요약 항목 18: 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자 예상되는 사용자 실수를 막는 다른 방법으로는 어떤 타입이 제약을 부여하여 그 타입을 통해 할 수 있는 일들을 묶어 버리는 방법이 있다. 제약 부여 방법으로 아주 흔히 쓰이는 예가 const 붙이기 이다. // operator*의 반환 타입을 const로 한정하면 다음과 같은 실수를 방지할 수 있다. if (a * b = c) ... 특별한 이유가 없다면 사용자 정의 타입은 기본제공 타입처럼 동작하게 만드는 것이 좋다. 이렇게 하는 실질적인 이유는 일관성 있는 인터페이스를 제공하기 위함이다. Inv..

    이펙티브 C++(132p ~ 142p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 132p ~ 142p 요약 항목 16: new 및 delete를 사용할 때는 형태를 반드시 맞추자 new 연산자를 사용해서 어떤 객체를 동적 할당하면 내부적으로는 두 가지가 진행된다. 메모리가 할당된다. 할당된 메모리에 대해 한 개 이상의 생성자가 호출된다. delete 연산자를 사용할 때에는 내부적으로 다음과 같은 동작이 진행된다. 기존에 할당된 메모리에 대해 한 개 이상의 소멸자가 호출된다. 메모리가 해제된다. 이때, delete 연산자가 적용되는 객체의 수는 소멸자가 호출되는 횟수와 같다. 삭제되는 포인터는 객체 하나만 가리킬까, 아니면 객체의 배열을 가리킬까? new로 힙에 만들어진 단일 객체의..