상속 접근 지정자는 3가지
- public
- private
- protected
특징
[public]
public 구간에 정의된 속성은 파생클래스(자식)의 정의부에서 접근이 가능하며
파생클래스(자식)의 객체를 통해서도 접근이 가능합니다.
[private]
private 구간에 정의된 속성은 파생클래스(자식)의 정의부에서 접근이 불가능하며
파생클래스(자식)의 객체를 통해서도 접근이 불가능합니다.
또한 기반클래스(부모/본인)의 객체를 통해서도 접근이 불가능합니다.
오로지 기반클래스의 정의부 내에서만 접근이 가능합니다.
[protected]
protected 구간에 정의된 속성은 파생클래스(자식)의 정의부에서 접근이 가능하지만
외부에서는 접근이 불가능 하며, 기반클래스나 파생클래스의 객체를 통해서도 접근이 불가능합니다.
상속 접근 지정자 | 기반(부모) 클래스 | 파생(자식) 클래스로 상속 형태 |
public | public | public |
private | 접근불가능 | |
protected | protected | |
private | public | public |
private | 접근불가능 | |
protected | public | |
protected | public | protected |
private | 접근불가능 | |
protected | protected |
#include<iostream>
using namespace std;
/*
상속 접근 지정자 부모 클래스 자식클래스
public public public
protected protected
private 접근 불가
protected public protected
protected protected
private 접근 불가
private public private
protected private
private 접근 불가
*/
class Base // 기반(부모) 클래스
{
private:
int privateDate; //
protected:
int protectedData;
public:
int publicData;
void Test(){}
};
class Derived : private Base
{
public: // public으로 부모클래스에 있는 것들을가져와도 아래클래스에서는 쓸수 없다.
Derived()
{
Test();
publicData;
protectedData;
//privateDate; // 접근불가
}
};
class A : public Derived
{
public:
A()
{
//Test(); // 접근불가
//publicData; // 접근불가
//protectedData; // 접근불가
//privateDate; // 접근불가
}
};
int main()
{
A a;
//a.Test(); // 사용불가
Derived d;
//d.Test(); // 사용불가
return 0;
}
'공부' 카테고리의 다른 글
[C++/DX11] 리소스매니저클래스, XML파일 저장&불러오기 (0) | 2023.05.18 |
---|---|
[C++/DX11] Yaw Pitch Roll(요,피치,롤), Gimbal Lock(짐벌락), Quaternion(쿼터니언) (2) | 2023.05.16 |
[C++] 특수 멤버 함수 (Special Member Function) (0) | 2023.05.14 |
[자료구조] 객체 관계 (Object Relationship) (0) | 2023.05.13 |
[XML] XML(Extensible Markup Language) 기초 (0) | 2023.05.12 |
댓글