[c++] 접근 제어 지시자
C++에서는 접근 제어자라는것이 있는데, 이는 함수를 구조체 내에 정의하거나, 구조체 키워드가 생략되는 것 이외에도 멤버의 접근에 제한은 둘 수 있도록 하는 것이다.
접근 제어 지시자 의 종류 : public, private, protected
public 지시자는 프로그램 어디에서나 접근가능
private 지시자는 외부에서 접근하지 못하며, 내부에서만 접근가능하다.
struct student {
private:
int id;
char *name;
float percentage;
public:
void Show();
void SetInfo(int _id, char * _name, float _percentage);
}; // 구조체 뒤에 세미콜론이 와야함
void student::Show() {
cout << "아이디: " << id << endl;
cout << "이름: " << name << endl;
cout << "백분율: " << percentage << endl;
}
void student::SetInfo(int _id, char * _name, float _percentage)
{
id = _id;
name = _name;
percentage = _percentage;
}
예제를 통해 쉽게 설명하자면 student의 id, name, percentage 변수는 private로 선언되었다. 이는
main 함수에서 s.id = 1 (s는 student의 객체)이라는 식으로 접근이 불가하다는 뜻으로 이해하면된다.
그렇다면 s.id에 접근하여 값을 넣고싶다면 어떻게 해야할까?
바로 s.SetInfo() 함수(public으로 선언)를 사용하여서 값을 변경할 수 있다.
결국엔 private로 선언된 변수들은 구조체 내부 함수를 통해 값을 변경할 수 있다는 것이다.
다음에 다룰 컨텐츠는 객체지향 프로그램에서 자주 들을 수 있는 클래스(Class)이다.
C++에서 구조체와 클래스의 차이는 없습니다. 기본으로 세팅된 접근제어 지시자가 구조체는 public, 클래스는 private로 되어 있다는 것 말고는 똑같다. C 언어와의 하위 호환성을 위해 동일한 기능을 남겨두었다고 생각하면된다.
출처 : http://blog.eairship.kr/165