티스토리 뷰

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


'programming > c++' 카테고리의 다른 글

[c++] visual studio remote debug  (0) 2017.02.02
[c++] MT, MD 차이  (0) 2017.02.01
[c++] new 와 delete  (0) 2016.05.18
[c++] 함수 오버로딩  (0) 2016.05.18
[c++] 네임스페이스  (0) 2016.05.18
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함