일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 도커
- c#
- c# winform
- 포인터
- gitlab
- jupyter
- Python
- Unity
- c# 추상 클래스
- Data Structure
- 깃
- git
- 플러터
- 구조체
- HTML
- 다트 언어
- github
- Flutter
- c# 윈폼
- Houdini
- jupyter lab
- C++
- Algorithm
- 유니티
- vim
- C언어 포인터
- dart 언어
- c언어
- C# delegate
- docker
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