한국어
C/C++
 

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

pjk 2014.06.27 22:09 조회 수 : 4703

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

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

 

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

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

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

 

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

번호 제목 글쓴이 날짜 조회 수
공지 C Programming FAQs(한글번역 pdf문서) makersweb 2014.03.18 26985
22 비트 필드의 크기는 해당 유형의 크기를 초과할 수 없다. makersweb 2023.04.25 355
21 flexible array member 에 대해서 file makersweb 2020.02.20 1913
20 C++로 플러그인 개발 file makersweb 2019.12.08 1793
19 배열과 포인터, 등가포인터 예제 makersweb 2019.01.16 1108
18 싱글톤 객체생성 패턴에 대해서 file makersweb 2018.07.01 3629
17 함수포인터와 typedef로의 선언 makersweb 2018.02.03 1150
16 예제소스를 통해 리틀엔디안(Little endian)과 빅엔디안(Big endian)의 차이점 알아보기 pjk 2014.05.24 8214
15 switch와 if 중 어느 것이 더 빠른가 file makersweb 2017.01.31 2825
14 구조체 배열을 반환하는 함수를 반환하는 함수를 호출하여 구조체 멤버 배열 요소 접근하기 makersweb 2016.05.22 9791
13 c/c++문자열, 유니코드 관련 함수 makersweb 2015.07.09 5222
12 volatile이 정확히 어떤 의미를 가지는 건가요? pjk 2014.09.30 4603
11 HEX(16진수) to ASCII(아스키) 변환 코드 pjk 2014.08.24 33114
10 strcmp, wcscmp, _tcscmp pjk 2014.07.18 10557
» 클래스 멤버에 대한 액세스 제어 pjk 2014.06.27 4703
8 unsigned형의 모든 상수에는 접미사 ‘U’를 사용하여야 한다. file pjk 2014.05.24 37447
7 void형 포인터 pjk 2014.05.24 5123
6 함수 포인터의 배열 pjk 2014.05.24 7605
5 구조체 메모리 저장방식 #pragma pack file pjk 2014.05.24 5394
4 Bit fields(비트필드) pjk 2014.05.24 4471
3 영어를 C언어로, 또는 C언어를 영어로 변환 해주는 cdecl makersweb 2014.03.19 7440