반응형
클래스 멤버의 접근 제어에 대해 알아보자
우선 멤버의 내부 접근과 외부 접근의 의미를 간략한 코드를 통해 보자면 아래와 같다.
class Test
{
public: //접근 제어 키워드
int a;
void plus()
{
a++; // 클래스 내부에서 멤버 변수의 값에 접근
}
};
int main(void)
{
Test h;
h.a =10; //클래스 외부에서 클래스를 선언하여 a값을 변경, 즉 외부 접근
h.plus(); // 외부 접근
return 0;
}
우선 멤버의 내부 접근과 외부 접근의 의미를 간략한 코드를 통해 보자면 아래와 같다.
class Test
{
public: //접근 제어 키워드
int a;
void plus()
{
a++; // 클래스 내부에서 멤버 변수의 값에 접근
}
};
int main(void)
{
Test h;
h.a =10; //클래스 외부에서 클래스를 선언하여 a값을 변경, 즉 외부 접근
h.plus(); // 외부 접근
return 0;
}
위에서 클래스 내에서 값을 증거시키는 부분을 내부 접근이라고 하고 그 이외에는 모부 외부 접근에 해당된다.
그럼 public, private, protected에 대해서 알아 보도록 하장...
접근을 제어하는 영역의 범위를 기주으로 위 세 접근제한자를 그림으로 표시 하자면 아래와 같다.
원의 넓이는 접근을 허용하는 범위를 의미한다...
원의 넓이는 접근을 허용하는 범위를 의미한다...
private
- private으로 멤버가 선언 되면 클래스의 내부에서만의 접근을 허용하겠다는 말이다.
즉 외부에서는 접근하면 컴파일러는 에러는 발생시킨다.
class Test
{
private:
int a;
public:
void plus()
{
a++;
}
int main(void)
- private으로 멤버가 선언 되면 클래스의 내부에서만의 접근을 허용하겠다는 말이다.
즉 외부에서는 접근하면 컴파일러는 에러는 발생시킨다.
class Test
{
private:
int a;
public:
void plus()
{
a++;
}
};
int main(void)
{
Test h;
h.a++; //private로 선언된 변수를 외부에서 접근 하므로 이 부부은 컴파일시 에러가 발생된다.
h.plus(); //public으로 선언한 함수에 접근하므로 문제될것이 없음
}
private 제한자에 대해 감이 왔을거당
함수를 private로 선언하면 클래스 내부에서 밖에 사용할수 없겠징?? (자바에서는 그런거 같은뎅..)
함수를 private로 선언하면 클래스 내부에서 밖에 사용할수 없겠징?? (자바에서는 그런거 같은뎅..)
반응형
'Study > C++' 카테고리의 다른 글
ASSERT의 사용! (0) | 2011.11.14 |
---|---|
Inline 함수! (0) | 2011.09.28 |
Call - by - Reference.... (0) | 2011.09.28 |
namespace 에 대해... (0) | 2011.09.28 |
디폴트 매개변수와 함수 오버로딩시 주의점!! (0) | 2011.09.28 |
댓글