한국어
C/C++
 

C++ 클래스 멤버에 대한 액세스 제어

pjk 2014.06.27 22:09 조회 수 : 4834

C++에서는 구조체(또는 클래스)의 멤버에 대한 외부의 참조를 허가할 것인지 금지할 것인지를 지정할 수 있다. 클래스 멤버 데이터 및 함수에 대한 액세스를 제어하여 C++로 작성된 소프트웨어의 무결성을 높일 수 있다.

아래와 같이 클래스 멤버의 액세스 수준을 private, protected 또는 public으로 선언할 수 있다.

 

private : 이 속성을 가지는 멤버는 외부에서 액세스할 수 없으며 구조체의 멤버 함수만 액세스할 수 있다. 외부에서는 프라이비트 멤버를 읽을 수 없음은 물론이고 존재 자체도 알려지지 않는다.

public : 이 속성을 가지는 멤버는 외부로 공개되어 누구나 읽고 쓸 수 있고 함수의 경우는 호출할 수 있다. 구조체가 자신의 속성이나 동작을 외부로 공개하는 수단이 되며 퍼블릭 멤버를 소위 인터페이스라고 한다.

protected : private와 마찬가지로 외부에서는 액세스할 수 없으나 단, 상속된 파생 클래스는 이 멤버를 액세스할 수 있다. 프라이비트 멤버는 파생 클래스에서조차도 참조할 수 없으며 오로지 자신만이 이 멤버를 참조할 수 있다는 점이 다르다.

 

클래스 멤버(class 키워드를 사용하여 선언된 클래스 형식의 멤버)에 대한 기본 액세스는 private이고, structunion 멤버에 대한 기본 액세스는 public이다. 두 경우 모두 public, private 또는 protected 키워드를 사용하여 현재 액세스 수준을 변경할 수 있다.

번호 제목 글쓴이 날짜 조회 수
공지 C Programming FAQs(한글번역 pdf문서) makersweb 2014.03.18 27013
22 비트 필드의 크기는 해당 유형의 크기를 초과할 수 없다. makersweb 2023.04.25 492
21 배열과 포인터, 등가포인터 예제 makersweb 2019.01.16 1238
20 함수포인터와 typedef로의 선언 makersweb 2018.02.03 1282
19 C++로 플러그인 개발 file makersweb 2019.12.08 1949
18 flexible array member 에 대해서 file makersweb 2020.02.20 2075
17 switch와 if 중 어느 것이 더 빠른가 file makersweb 2017.01.31 3100
16 싱글톤 객체생성 패턴에 대해서 file makersweb 2018.07.01 3798
15 Bit fields(비트필드) pjk 2014.05.24 4494
14 C언어 강좌-배열과 포인터 file makersweb 2014.03.10 4727
13 volatile이 정확히 어떤 의미를 가지는 건가요? pjk 2014.09.30 4747
» 클래스 멤버에 대한 액세스 제어 pjk 2014.06.27 4834
11 void형 포인터 pjk 2014.05.24 5269
10 c/c++문자열, 유니코드 관련 함수 makersweb 2015.07.09 5375
9 구조체 메모리 저장방식 #pragma pack file pjk 2014.05.24 5459
8 C코드 최적화 pjk 2014.02.10 5473
7 영어를 C언어로, 또는 C언어를 영어로 변환 해주는 cdecl makersweb 2014.03.19 7552
6 함수 포인터의 배열 pjk 2014.05.24 7835
5 예제소스를 통해 리틀엔디안(Little endian)과 빅엔디안(Big endian)의 차이점 알아보기 pjk 2014.05.24 8248
4 구조체 배열을 반환하는 함수를 반환하는 함수를 호출하여 구조체 멤버 배열 요소 접근하기 makersweb 2016.05.22 9929
3 strcmp, wcscmp, _tcscmp pjk 2014.07.18 10701