프로그래밍/C++

C++ 문법 - 상속 접근제어 변경

게으른구름 2018. 1. 22. 00:43

< 접근제어자 >


1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
public:
    int a;
protected:
    int b;
private:
    int c;
};
 
class B : public A {};
class C : protected A {};
class D : private A {};
cs


A를 서로 다른 접근제어자로 상속 받은 3개의 자식 클래스가 있습니다.

각각의 접근제어자는 어떤 역할을 할까요?


상속 시 접근제어자는 자신보다 범위가 더 큰 접근상태를 자기자신으로 바꿉니다.

(public > protected > private)


말로는 어려우니 예제를 통해 알아보겠습니다.


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
 
using namespace std;
 
class A
{
public:
    int a;
protected:
    int b;
private:
    int c;
};
 
class B
{
public:
    int a;
protected:
    int b;
private:
    int c;
};
 
class C
{
protected:
    int a, b;
private:
    int c;
};
 
class D
{
private:
    int a, b, c;
};
 
int main()
{
    cout << "시작" << endl;
    Test first;
    cout << "number : " << first.number << endl;
    return 0;
}
cs


B는 public으로 상속받았기 때문에 public보다 범위가 큰 접근상태가 없어서 A를 그대로 상속받았습니다.

C는 protected로 상속받았기 때문에 protected보다 범위가 큰 public을 protected로 바꿔서 상속받았습니다.

D는 private으로 상속받았기 때문에 private보다 범위가 큰 public, protected를 private으로 바꿔서 상속받았습니다.