본문 바로가기

Programming/C/C++

C++/접근지정자

반응형

접근 지정자란?


Access Modifier, Access Specifier 라고도 하며, 객체 지향 언어에서 객체를 캡슐화 하고, 외부에서 접근이 가능한 공개 멤버와 외부에서의 접근을 허용하지 않는 인가하지 않는 비공개 멤버를 구분 짓는 지정자이다. C++ 에서는 3가지 멤버 접근 지정자를 지원한다.


* private - 비공개

 클래스 내의 멤버 함수에게만 접근을 허용, 인가 한다.

* public - 공개

 클래스 내외를 막론하고 프로그램의 모든 함수들에게 접근을 허용, 인가한다.

* protected - 보호

 클래스 내의 멤버 함수에게 접근을 허용 하며 이 클래스를 상속 받는 파생 클래스의 멤버 함수에게 접근을 허용, 인가한다.


디폴트 접근 지정


디폴트 접근 지정은 private로 처리되며 디폴트 접근 지정자에 해당하는 멤버는 클래스 내의 지정자가 정해지지 않는 멤버가 해당된다.

이 규칙은 캡슐화의 기본 원칙이 비공개이기 떄문이다.  다음 예시를 보면 radius 는 private 멤버로 처리 된다.


1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
 
class Circle {
    int radius;
public:
    Circle();
    Circle(int r);
    double getArea();
};
cs


멤버 보호와 생성자


클래스의 멤버들을 클래스의 외부에서 마음대로 접근하는 것을 허용해서는 안된다.

또 객체를 생성하기 위해 생성자는 반드시 public으로 선언해야 하며, 생성자가 public으로 선언되어 있지 않으면 컴파일 오류가 발생한다.

다음과 같은 규칙을 지키는 것이 바람직하다.

* 변수 멤버는 private으로 지정하는 것이 바람직함

* 생성자는 public으로 생성


반응형

'Programming > C/C++' 카테고리의 다른 글

C++/C++ 구조체  (0) 2017.10.23
C++/인라인 함수  (0) 2017.10.23
C++/소멸자  (0) 2017.10.22
C++/예제/클래스/ Rectangle 클래스 만들기  (0) 2017.10.22
C++/컴파일러에 의한 생성자 자동생성  (0) 2017.10.22