#include <iostream>
using namespace std;
class Base
{
public:
int m_public;
protected:
int m_protected; // base.m_protected 와 같이 직접 접근 불가
private:
int m_private;
};
class Derived : public Base
{
public:
Dervied()
{
m_public = 123; // 접근 가능
m_protected = 123; // 접근 가능
// m_private = 123 // 접근 불가능
// protected Base로 상속받으면
// Base::m_public; // 접근 가능.
// Base::m_protected; // 접근 가능
// Base::m_private; // 접근 불가능.
}
};
class GrandChild : public Derived
{
public:
GrandChild()
{
// Dervied::m_public; Derived에서 private base로 상속받으면 m_public이 private처럼 작동하기 때문에 접근 불가능.
}
}
int main()
{
Base base;
Derived derived;
derived.m_public = 1024; // 접근 가능 // 만약 부모로부터 protected로 상속받으면 외부에서 m_public 접근 불가능.
// derived.m_protected = 1024; // 접근 불가능
return 0;
}