본문 바로가기

Programming/C++ 3

[C++] 07-03. protected 선언과 세 가지 형태의 상속

반응형

protected로 선언된 멤버가 허용하는 접근의 범위

 

private < protected < public

 

protected는 private과 동일하게 클래스 외부 접근 불가

private과 달리 상속관계에서의 접근을 허용


//private 상속과 protected 상속
#include <iostream>
using namespace std;

class Base
{
private:
	int num1;
protected:
	int num2;
public:
	int num3;
	void ShowData()
	{
		cout << num1 << ", " << num2 << ", " << num3;
	}
};

class Derived:public Base //public 상속
{
public:
	void ShowBaseMember()
	{
		cout << num1; //private: 컴파일 에러
		cout << num2; //protected: 컴파일 가능
		cout << num3; //public: 컴파일 가능
	}

};

 

세가지 형태의 상속 [상속의 형태] : 상속할 때 접근 제어 키워드의 유지 방법 결정

  • public 상속
    • class Derived : public Base
      {
      	...
      }
       
    • 접근 제어 권한 그대로 상속
  • protected 상속
    • class Derived : protected Base
      {
      	...
      }​
    • public 멤버를 protected로 상속
  • private 상속
    • class Derived : private Base
      {
      	...
      }​
       
    • public, protected 멤버를 private으로 상속
    • 단, private은 접근 불가로 상속

 


class Derived:private Base
{
접근불가:
	int num1;
private:
	int num2;
private:
	int num3;
};
class Derived:protected Base
{
접근불가:
	int num1;
protected:
	int num2;
protected:
	int num3;
};
class Derived:public Base
{
접근불가:
	int num1;
protected:
	int num2;
public:
	int num3;
};
반응형