이펙티브 C++(183p ~ 190p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 (183p ~ 190p) 이펙티브 C++(183p ~ 190p) 요약 5. 구현 항목 26: 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자 생성자 혹은 소멸자를 끌고 다니는 타입으로 변수를 정의하면 반드시 물게 되는 비용이 두 개 있다. 프로그램 제어 흐름이 변수의 정의에 닿을 때 생성자가 호출 그 변수가 유효범위를 벗어날 때 소멸자가 호출 이 경우에는 변수가 정의됐으나 사용되지 않은 경우에도 비용이 부과된다. 다음 함수는 주어진 비밀번호가 충분히 길 경우에 해당 비밀번호를 암호화하여 반환하는 함수이다. 비밀번호가 너무 짧으면 logic_error 타입의 예외를 던진다.(표준 C++에 정의되..

    이펙티브 C++(169p ~ 182p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 169p ~ 182p 이펙티브 C++(169p ~ 182p) 요약 항목 24: 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멤버 함수를 선언하자 클래스에서 암시적 타입 변환을 지원하는 것은 일반적으로 못된 생각이지만, 이 규칙에도 예외가 있다. 가장 흔한 예외 중 하나가 숫자 타입을 만드는 경우이다. 유리수와 관련된 클래스를 만들 때, 정수를 유리수로 암시적으로 변환하는 부분은 어색하지 않다. C++에서 기본으로 제공하는 int → double 변환도 크게 다르지 않다고 보면 된다. Rational 클래스는 이런 결정에 따라 만들기 시작한 클래스이다. class Rational { public..

    이펙티브 C++(160p ~169p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 160p ~ 169p 요약 항목 22: 데이터 멤버가 선언될 곳은 private 영역임을 명심하자 데이터 멤버가 public, protected 영역에 존재하면 안되는 이유를 알게 되면, 자연스럽게 데이터 멤버가 private 영역에 선언되어야 한다는 것도 자연스레 알게 될 것이다. 문법적 일관성 데이터 멤버가 public이 아니라면 사용자 쪽에서 어떤 객체를 접근할 수 있는 유일한 수단은 멤버 함수일 것이다. 따라서 사용자는 해당 클래스의 멤버에 접근하고 싶을 때 그저 함수만 사용하면 된다. 데이터 멤버에 대한 정교한 제어 public으로 데이터 멤버를 선언했다면 모든 곳에서 이 멤버에 대해 읽고, ..

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

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 149p ~ 160p 요약 항목 20: ‘값에 의한 전달’보다는 상수객체 참조자(레퍼런스)에 의한 전달’ 방식을 택하는 편이 대개 낫다 기본적으로 C++는 함수로부터 객체를 전달받거나 함수에 객체를 전달할 때 ‘값에 의한 전달’ 방식을 사용한다.(C에서 물려받은 특성 중 하나) 특별히 다른 방식을 지정하지 않는 한, 함수 매개변수는 실제 인자의 사본을 통해 초기화되며, 어떤 함수를 호출한 쪽은 그 함수가 반환한 값의 사본을 리턴받는다. 사본을 만들어내는 원천이 바로 복사 생성자이다. 사본을 만들 때 복사 생성자를 사용하기 때문에 ‘값에 의한 전달’이 고비용의 연산이 될 수 있다. class Person..