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

2024. 11. 7. 15:30·공부/C++
728x90

protected의 허용 접근 범위

C++의 접근 제어 지시자에는 private, protected, public이 있으며, 이들이 허용하는 접근 범위는 다음과 같다.

private < protected < public

 

protected는 private과 마찬가지로 클래스 외부에서는 접근이 불가하고, 클래스 내부에서는 접근이 가능하다.

그러나 protected로 선언된 멤버변수는 이를 상속하는 유도 클래스에서 접근이 가능하다는 차이점이 있다.

 


protected 상속

protected 상속은 protected보다 접근의 범위가 넓은 멤버는 protected로 변경시켜서 상속하겠다는 의미를 가진다.

#include <iostream>
using namespace std;

class Base
{
private:
	int num1;
protected:
	int num2;
public:
	int num3;

	Base() : num1(1),num2(2),num3(3) 
	{ }
};

class Derived : protected Base //protected 상속
{
//empty
};

int main(void) {
	Derived drv;
	cout << drv.num3 << endl;//컴파일 에러
	return 0;
}

protected보다 접근 범위가 넓은 멤버는 public 멤버이므로 num3이 protected가 된다.

그리고 num1은 선언이 된 Base 클래스 이외의 영역에서 접근이 불가능 해야한다.

 

main함수에서 num3은 Derived클래스에서 protected멤버가 되므로 외부에서 접근이 불가능한것이다.


 

private 상속

private로 상속을 하면 private보다 접근 범위가 넓은 protected, public 멤버는 private로 변경되고,

기존에 private이던 멤버는 접근이 불가능하다.

 

만약 private 상속이 이뤄진 클래스를 다시 상속할 경우, 멤버함수를 포함하여 모든 멤버가 '접근 불가'가 되기 때문에

사실상 의미 없는 상속이 되어버린다.

 


public 상속

 

public 상속은 public이 가장 넓은 범위의 접근을 허용하기 때문에 private을 제외한 나머지는 그냥 그대로 상속하게 된다.

 

실제로는 public 이외의 상속은 다중상속과 같이 특별한 경우가 아니면 잘 사용하지 않는다...

728x90

'공부 > C++' 카테고리의 다른 글

[C++] 7-5. OOP 단계별 프로젝트 05단계  (1) 2024.11.10
[C++] 7-4. 상속을 위한 조건  (0) 2024.11.08
[C++] 7-2. 상속의 문법적인 이해  (0) 2024.11.06
[C++] 7-1. 상속에 들어가기에 앞서  (0) 2024.11.06
[C++] 6-3. c++에서의 static  (2) 2024.11.01
'공부/C++' 카테고리의 다른 글
  • [C++] 7-5. OOP 단계별 프로젝트 05단계
  • [C++] 7-4. 상속을 위한 조건
  • [C++] 7-2. 상속의 문법적인 이해
  • [C++] 7-1. 상속에 들어가기에 앞서
knhoo
knhoo
  • knhoo
    &*
    knhoo
  • 전체
    오늘
    어제
    • 전체 (139)
      • Unity 개발일지 (1)
        • [Unity2D]졸업프로젝트 (17)
        • [Unity3D]VR프로젝트 (2)
      • 공부 (115)
        • 부트캠프 (12)
        • C++ (39)
        • Unity & C# (8)
        • 데이터베이스 (2)
        • 컴퓨터비전 (0)
        • 컴퓨터구조 (0)
        • python (7)
        • BAEKJOON (36)
        • 개발 (2)
        • 자료구조 (9)
      • 일상 (2)
  • 블로그 메뉴

    • Github
    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 📖README
  • 인기 글

  • 태그

    Python
    앱테크
    멋쟁이사자처럼후기
    패널파워
    자료구조
    티스토리챌린지
    c#
    구간합
    Cpp
    머니워크
    오블완
    캐시워크
    야핏무브
    til
    백준
    C++
    unity
    unity2d
    백준 #python
    비트버니
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
knhoo
[C++]7-3. protected 선언과 세가지 형태의 상속
상단으로

티스토리툴바