업데이트 : 240317
-> 생성자 상속이 있고, 프로젝트 만들 때 사용하자.
네이버 블로그 참고 : 상속 생성자는 잘 알고 사용하자.
-> 만약 파생클래스에서 인자로 들어오게 되면, Base 클래스에다가 전달하려면 계속 연이어 생성자 인자로 전달해야 한다.
- 재정의가 아닌 상태에서 , 파생클래스가 함수이름이 동일할 경우(인자 타입, 반환 타입, 인자 개수등)
함수 시그니처가 다르다고 하더라도, 기반베이스의 함수는
파생 클래스 함수에 의해 가려짐.
- 이펙티브 c++ 36
-> 상속해서 사용한다는 의미가 만들어진 기능을 그대로 물려받는다는 의미인데, 이름 중복시키는 것을 상속을 파훼하는 행동임
-> 파생 클래스에서 기반 클래스의 멤버함수 foo의 인자 시그니처를 동일하게 하고, 작성할 경우 이는 재정의(오버라이딩)에 해당함.
-> 파생 클래스에서 인자의 갯수, 인자 타입. 를 다르게 한 상태
이것이 의미하는 바는?
-> 이런식으로 사용하면 됨.
: using을 사용하면 기반 클래스의 생성자도 가려지는 문제를 방지할 수 있다.
-> 파생 클래스에서 기반 클래스의 멤버값을 초기화할 때,
이런식으로 초기화를 했음.
: 파생클래스는 기반 클래스의 데이터를 초기화하기 위해서 이니셜라이저에서 초기화함.
특징으로는 반드시 기반클래스의 생성자는 디폴트값이 있어야 한다.
없으면 에러 발생함...
디폴트 생성자 처리를 하든지? 아니면 인자 있는 함수에 직접 디폴트값을 넣어주는 방식으로 처리가 가능하다.
결론
: 디폴트 생성자 최고!
뭐냐?? 이것도 생성자를 가리고 있는 것이다.
: 전문가 c++ p.560에 해당함.
: 생성자 상속을 사용한다고 할 때는 반드시 파생 클래스에서는 파생에서만의 멤버 데이터가 없어야 한다.
그리고 파생 클래스 생성자가 호출되지 않을수도 있다는 것을 알고 있자.
현재 Player 생성자 코드
파생클래스인 MyPlayer 생성자 만들때 이렇게 사용해왔다
위에서 배운 생성자 상속으로 코드 단순하게 만들어보자.