일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 루아
- lua
- operator new
- 다형성
- reference
- resource management class
- 예외
- 티스토리챌린지
- 게임
- 참조자
- 오블완
- 암시적 변환
- 메타테이블
- 비교 함수 객체
- Smart Pointer
- effective stl
- implicit conversion
- exception
- 반복자
- virtual function
- UE4
- 상속
- 스마트 포인터
- Effective c++
- 영화 리뷰
- Vector
- c++
- 언리얼
- 영화
- more effective c++
- Today
- Total
목록상속 (4)
스토리텔링 개발자
항목 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 {..
개요 루아에는 상속이라는 개념이 없습니다. 정확하게 말하자면, 언어에서 지원하지 않는다는 의미입니다. 하지만 클래스를 통한 객체 지향 프로그래밍에 익숙하다면 상속 개념을 사용하고 싶은 것도 사실입니다. 이에 대해서는 여러가지 방법이 있겠지만, 여기선 메타테이블을 사용하여 상속 개념을 구현하는 방법을 하나 소개하겠습니다. 주요 루아 함수 상속 개념을 구현하기 위해서 아래의 루아 함수들을 활용합니다. rawget 메타 테이블 콜스택을 거치지 않고 해당 테이블의 값을 직접 가져옵니다. rawset 메타 테이블 콜스택을 거치지 않고 해당 테이블에 키 / 값 페어를 직접 적용합니다. setmetatable(t, mt) mt 테이블을 t 테이블의 메타 테이블로 설정합니다. getmetatable(t) t 테이블의 ..