일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- C언어 포인터
- jupyter lab
- c언어
- docker
- 다트 언어
- 포인터
- jupyter
- c#
- gitlab
- Unity
- HTML
- c# 추상 클래스
- 깃
- Algorithm
- 도커
- c# winform
- Flutter
- 플러터
- Houdini
- git
- vim
- 유니티
- Data Structure
- C# delegate
- c# 윈폼
- dart 언어
- github
- 구조체
- Python
- C++
Archives
- Today
- Total
nomad-programmer
[Programming/C++] 접근 제어 키워드 (public, protected, private) 본문
접근 제어 키워드
- public: 모든 곳으로부터의 접근 허용
- protected: 자식 클래스의 멤버 함수로부터의 접근만 허용
- private: 자신의 멤버 함수 외에는 접근 불가
다음 예제를 보며 이 키워드가 의미하는 바를 구체적으로 확인해보자.
#include <iostream>
using namespace std;
class Parent{
private:
int priv;
protected:
int prot;
public:
int publ;
};
class Child : public Parent {
void AccessParents(){
int n;
// 부모의 멤버에 접근 시도
n = prev; // 실패
n = prot; // 성공
n = publ; // 성공
}
};
int main(int argc, const char * argv[]) {
Parent pa;
// 객체의 멤버에 접근 시도
int n;
n = pa.priv; // 실패
n = pa.prot; // 실패
n = pa.publ; // 성공
return 0;
}
각 상황별로 정리해보면 이렇다.
자신의 멤버 함수에서 접근 | 자식 클래스의 멤버 함수에서 접근 | 외부에서 접근 | |
private 멤버 | O | X | X |
protected 멤버 | O | O | X |
public 멤버 | O | O | O |
그러면 이렇게 다양한 옵션을 어떻게 활용해야 할지 생각해보자. 그런데, 가이드라인은 간단하다.
- 외부로부터 숨겨야 하는 멤버는 protected로 지정한다.
- 그 밖의 경우는 public으로 지정한다.
- 반드시 자식 클래스에 숨기고 싶다면 private으로 지정한다.
자식 클래스에게까지 멤버를 숨겨야 하는 경우는 그렇게 흔치 않다. 그렇기 때문에 외부에 숨기려는 목적이라면 protected로 해두는 것이 좋다.
'Programming > C++' 카테고리의 다른 글
[Programming/C++] 전역 함수를 이용한 연산자 오버로딩 (2) | 2023.01.20 |
---|---|
[Programming/C++] 다중 상속(Multiple Inheritance) (0) | 2023.01.20 |
[Programming/C++] 연산자 오버로딩 (0) | 2023.01.19 |
[Programming/C++] const 멤버 함수와 비 const 멤버 함수 (0) | 2023.01.19 |
[Programming/C++] C++ Standard Library (aka. STL) (0) | 2023.01.19 |
Comments