티스토리 뷰
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
- angular
- HTTPS
- TypedArray
- node js
- JavaScript
- App Transport Security
- rxswift
- Visual Studio
- 윈도우 라이브러리
- 암호화
- ucrtbase.dll
- executable jar
- iOS10
- TLS1.2
- Universal CRT
- AES
- 비대칭키
- 대칭키
- execute double click
- 전자서명
- build set
- yss
- full stack
- Node.js
- reactivex
- MEAN stack
- remote debug
- ATS
- cipher
- PCX
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |