Friend : 외부의 객체에서 내부에 있는 멤버에 접근하는 문법 (외부 to 내부)
넘길 대상을 소유하고 있는 객체 내에서 friend 선언을 한 후
friend를 받을 대상인 객체 내에서 해당 함수와 똑같은 함수를 생성
ex) First 클래스에서 Second 클래스로 Render 함수를 Friend를 사용하여 넘길경우...
class First
{
public:
friend int Second::Func() { return m_First; }
private:
int m_First;
}
class Second
{
public:
int Func() { return m_First; }
}
private의 여부에 상관 없이 내부의 값을 자유자재로 사용하므로 객체지향의 은닉화에 위배된다
But! 이미 완성된 코드에 대해 유지보수를 진행할 경우 용이한 문법 서로 객체에 대한 선언, 상속 없이 헤딩 기능만을 호출할 수 있다
상속 : 부모 클래스 내의 메서드를 자식 클래스에서 사용 가능하도록 만드는 문법 -> 여러 자식이 공통으로 가지는 매서드 를 부모에서 관리
ex)
#include "Obj.h"
class CPlayer : public CObj
{
public:
CPlayer();
~CPlayer();
}
상속 선언을 할 때 범위 지정 연산자에 private과 protected도 올 수 있으나 상속의 목적에 부합한다
상속을 받게 될 경우 부모의 매서드에 직접 접근하는 것이 아닌, 부모의 매서드를 복사해서 가진다
상속된 클래스의 호출
protected : 상속을 받는 클래스에 한해 public처럼 접근이 가능하지만, 이외에는 private으로 동작
클래스 상속의 조건
ex)
상속의 특징