2019년 5월 9일 목요일

국비 교육 : 게임 프로그래밍 027일

27일 차 교육 내용 메모를 옮겨 본다.
함수 선언과 클래스 상속에 대한 내용이 작성되어 있다. 

함수 선언(프로토타입)을 신경 쓰자
전역 함수로 선언한 녀석들을 헤더에 선언을 해줘야 문제없이 돌아간다.

클래스 상속
- 문법 2개, 기능 1개의 상속 관련 전용 기능이 있다.
- 기존의 클래스로 새로운 클래스를 만드는 문법

상속 방법
class 클래스 명 : public 클래스 명
{
}


1. 상속에서의 접근제어 지정
- 상속받는 멤버의 최소 접근 제어
- public : 부모의 최소가 public
- protected : 부모의 최소가 protected
- private : 부모의 최소가 private
- 일반적으로 public으로 선언하며 마지막 상속의 경우만 private로 선언

상속의 종류
- 연속 상속 : A ← B ← C ← D
- 다중 상속 : A ←┐
        ┠ C
      B ←┘

상속의 사용의미
- 재활용
 1) 의미의 확장
 2) 의미의 세분화


2. 오버라이딩
- 클래스 상속 시 똑같은 함수를 선언해 사용하는 것을 의미
- 부모와 같은 함수(프로토타입이 동일)를 자식도 만들어 사용하는 것
 (재정의해 만드는 것)
- 클래스 상속 간에서 부모 클래스의 멤버 함수를 자식 클래스가 재정의하는 것
 (같은 프로토타입인데 기능이 다르다)


3. 부모 포인터 변수
- 자식 개체의 주소를 저장할 수 있다.

부모 포인터 변수 활용
- 여러 자식 클래스의 객체를 하나의 자료형으로 관리
- 부모 포인터 변수로 모든 자식 객체의 저장 가능
 예) 몬스터 *p = 고블린, 오크, 트롤...

문제
- 포인터는 자신의 자료형으로 주소의 형태를 파악한다.
- 포인터는 자신의 주소가 내 자료형일 것이라 짐작한다.
- 즉, 부모 메모리를 가리킨다.

필요한 것
- 부모의 포인터 변수에서 자식의 함수를 호출하는 방법이 필요하다.


4. 바인딩
- 함수의 선언과 정의를 결합하는 과정
- 컴파일 시점에서 고정되는 것을 정적 바인딩
- 호출 시점에 호출 위치를 파악하는 것을 동적 바인딩

vitual 키워드
- 동적 바인딩으로 함수를 구성하게 하는 키워드
- 클래스 내에 가상함수가 있는 경우 가상 함수 테이블이라는 함수 위치 저장소가 생성
 1) 부모의 함수에 virtual 키워드를 추가
 2) 부모의 가상함수를 자식이 오버라이딩
 3) 부모 포인터로 가상함수 호출 시 자식 함수 호출

순 가상함수
- virtual void Func() = 0;
- 함수 선언 뒤에 "= 0 "을 붙인 것
- 순 가상함수가 있으면 해당 클래스를 이용한 변수 선언이 안 된다.
- 자식 클래스에서 해당 함수의 오버라이딩을 강제한다.


이상과 같이 클래스 상속과 관련된 메모된 내용을 옮겨 보았다.
함수의 선언보다 클래스 상속에 대한 내용이 주를 이룬 것으로 보아, 함수 선언은 짧게 훑고 지나 간듯하다.

댓글 없음:

댓글 쓰기

Unity - Firebase 연동 (Analytics, AdMob)

버전 : firebase_unity_sdk_6.5.0.zip 게임에서 통계 측정 및 광고 추적을 위해 Firebase 을 연동한다. 앞서 [Unity - GPGS 와 Admob 연동 및 배포 준비 작업]  연동 이후에 작업을 진행 한다. 유니...