programming/c++

[c++] 접근 제어 지시자

LEIBNIZ 2016. 5. 18. 22:18

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