일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스마트 포인터
- 함수 객체
- 암시적 변환
- 상속
- exception
- 예외
- implicit conversion
- c++
- 오블완
- 반복자
- Effective c++
- more effective c++
- 참조자
- operator new
- 게임
- 다형성
- 영화 리뷰
- lua
- 메타테이블
- 티스토리챌린지
- 언리얼
- effective stl
- UE4
- 루아
- 비교 함수 객체
- resource management class
- 영화
- reference
- Smart Pointer
- virtual function
- Today
- Total
목록inheritance (3)
스토리텔링 개발자
항목 36. 상속받은 비가상 함수를 파생클래스에서 재정의하는 것은 금물 비가상 함수를 가리면 생기는 문제class B{public: void mf(); ...};class D : public B{public: void mf(); // B::mf를 가려버린다! ...};D x; // D 타입B* pB = &x; // x에 대한 포인터를 B*에 넣는다.D* pD = &x; // x에 대한 포인터를 D*에 넣는다.pB->mf(); // B::mf를 호출pD->mf(); // D::mf를 호출!!!!비가상 함수를 가려버리면, 포인터가 어디에 담겨있느냐에 따라 다르게 동작한다.가상 함수 및 오버라이드를 사용했을 경우 발생하지 않는 문제이다. 문제 동작 이유비가상 함수는 정적 바인딩으로 ..
항목 35. 가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러두자. 가상 함수 버전class GameCharacter{public: virtual int healthValue() const; // 캐릭터의 체력 가상 함수 ...};가상 함수 외의 방법으로 구현할 수는 없을까? 비가상 인터페이스(NVI) 관용구를 통한 템플릿 메서드 패턴class GameCharacter{public: int healthValue() const // 비가상 인터페이스 { ... int retVal = doHealthValue(); ... return retVal; } ...private: virtual int doHe..
항목 34 : 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자 상속이 가지는 두 가지 의미함수 인터페이스를 상속한다.함수 구현을 상속한다.이 두 가지 의미를 잘 헤아려서 사용해야 한다.이에 대해 아래 예제를 통해 알아본다. 추상 클래스와 상속// 추상 클래스class Shape{public: virtual void draw() const = 0; // 순수 가상 함수 virtual void error(const string& msg); // 단순 가상 함수 int objectID() const; // 비가상 함수 ...};// 파생 클래스들class Rectangle : public Shape { ... };class Ellipse : public Shape {..