티스토리 뷰

언어/C++

11.5 상속과 접근 지정자

js0331 2020. 5. 3. 19:56
class Base
{
	public:
	int m_public;
	
	protected:
	int m_protected;
	
	private:
	int m_private;
};
class Derived : public Base
{
	public:
	Derived()
	{
		m_public = 1; // ok!
		m_protected = 2; // ok!
		m_private = 3; // No!
	}
};
int main()
{
	Derived d;
	d.m_public = 1024; // ok!
	d.m_protected = 1024; // No!
	d.m_private = 123; // No!
	
	return 0;
}

 

public Base로 되어있는데 만일 다른 접근 지정자로 바꾼다면 접근이 제한된 방향으로 나아가게 된다.

 

protected Base로 바꾸게 된다면 Base의 m_public 또한 외부에서 접근이 불가하게 된다. 클래스 내부에선 m_public 사용 가능!

 

class Derived : private Base
{
	public:
	Derived()
	{
		m_public = 1;
		m_protected = 2;
		m_private = 3;
	}
};

class GrandChild : public Derived
{
	public:
	GrandChild()
	{
		Derived::m_public; // No!
	}
};

 

private Base로 바꾸게 된다면 m_public 같은 class Base의 친구들을 private로 막아버린다.

 

class Derived에서는 사용가능! (함수로 통해서는 사용가능)

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함