이펙티브 C++(261p ~ 270p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 261p ~ 270p 이펙티브 C++(261p ~ 270p) 요약 항목 35: 가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자 tr1::function으로 구현한 전략 패턴 tr1::function 타입의 객체를 써서 함수 포인터를 대신하게 만들 수 있다. tr1::function은 함수호출성 개체(callable entity)를 가질 수 있고, 이들 개체는 주어진 시점에서 예상되는 시그니처와 호환되는 시그니처를 가지고 있다. class GameCharacter; int defaultHealthCalc(const GameCharacter& gc); class GameCharacter..

    이펙티브 C++(250p ~ 261p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 250p ~ 261p 이펙티브 C++(250p ~ 261p) 요약 항목 34: 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자 인터페이스 및 기본 구현을 제공하는 함수를 별도로 마련하는 방법을 별로 좋아하지 않을 수도 있다. 이를 위해 순수 가상 함수가 파생 클래스에서 재선언되어야 한다는 사실을 활용하되, 자체적으로 순수 가상 함수의 구현을 준비해 둘 수 있다. class Airplane { public: virtual void fly(const Airport& destination) = 0; } void Airplane::fly(const Airport& destination) { //..

    이펙티브 C++(230p ~ 239p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 230p ~ 239p 이펙티브 C++(230p ~ 239p) 6. 상속, 그리고 객체 지향 설계 C++의 OOP는 일반적인 OOP보다 조금 더 생각할 부분이 있다. 상속은 단일 상속과 다중 상속이 가능하다. 상속 관계 하나하나가 public, protected, private 성질을 가질 수 있다. 가상 상속과 비가상 상속이 있다. C++에서 OOP 개념은 다음과 같다. public 상속은 반드시 is-a 관계를 뜻해야 한다. 가상 함수의 의미는 ‘인터페이스가 상속되어야 한다.’ 이지만 비가상 함수는 ‘인터페이스와 구현이 둘 다 상속되어야 한다.’이다. 항목 32: public 상속 모형은 반드시 is..

    이펙티브 C++(240p ~ 250p)

    이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 240p ~ 250p 이펙티브 C++(240p ~ 250p) 요약 항목 33: 상속된 이름을 숨기는 일은 피하자 int x; // 전역 변수 void someFunc() { double x; std::cin >> x; } 값을 읽어 x에 넣는 위의 문장에서 실제로 참조하는 x는 전역 변수 x가 아니라 지역 변수 x이다. 안쪽 유효범위에 있는 이름이 바깥쪽 유효범위에 있는 이름을 가리기 때문이다. 상속 관계에서는 기본 클래스에 속해 있는 것을 파생 클래스 멤버 함수 안에서 참조하는 문장이 있으면 컴파일러는 이 참조 대상을 바로 찾아낼 수 있다. 파생 클래스의 유효범위가 기본 클래스의 유효범위 안에 중첩되..