1. 접근 권한과 관련한 키워드는 public, protected, private가 있다.
protected, private 외부에서 멤버들에 접근할 수 없도록 만든다.
( 멤버라 함은 멤버함수와 멤버 변수를 합쳐서 부른 것 )
생생자와 소멸자도 접근 권한을 지정할 수 있는데
일반적으로는 public으로 한다.
1_1 protected는 자식 클래스의 멤버 함수로부터의 접근을 허용
private는 자신의 멤버 함수 외에는 접근할 수 없다.
|
자신의 멤버 함수에서 접근 |
자식 클래스의 멤버 함수에서 접근 |
외부에서 접근 |
private 멤버 |
O |
X |
X |
protected 멤버 |
O |
O |
X |
public 멤버 |
O |
O |
O |
2. 맴버함수안에서는 private 밑에 있는 다른 멤버들이라도 얼마든지 접근 가능하다.
3. main안에서 public 함수를 부르고 그 함수안에서 private 함수를 부르면
클래스 외부에서도 간접적으로 나마 접근이 가능하다.
4. 클래스에서 모든 멤버 변수는 protected나 private로 만드는 것이 좋다.
class Point
{
private:
int x, y; // 멤버 변수를 private로 만듬
public:
// 생성자들
Point();
Point( int initialX, int initialY );
Point( const Point& pt );
// 접근자
void SetX( int value ) { x = value; }
void SetY( int value ) { y = value; }
int GetX() { return x; };
int GetY() { return y; };
};
대신 3. 항목의 개념을 가져와서
일반 멤버함수이지만 private 멤버변수에 접근하기 위한 용도의 멤버함수라는 식으로
접근자 함수들을 만들어 주는 것이 좋다.
이렇게 만듬으로서 멤버 변수에 입력하는 값들의 범위를 정한다던가 할 수 있게 된다.
void SetX( int value )
{
if ( value < 0 )
x=0;
}