반응형
    
    
    
  struct를 사용할 줄 안다면 클래스를 이해하는 것에는 큰 어려움이 없다.
struct와 class에 차이를 보면서 이해하면 더 수월하게 class를 이해할 수 있을 것이다.
구조체와 클래스에 가장 큰 차이는 접근제어 지시자를 선언하지 않았을 때에
구조체는 public으로 선언되고
클래스는 private으로 선언된다는 것이다.
이 차이는 구조체에 있는 멤버 변수를 어디서든 참조가 가능하다는 것이다.(구조체 선언을 했다는 조건 하에)
접근제어 지시자에 대해서는 다른 내용에서 더 정리하겠다.
선언에서도 차이가 있다.
struct People {
	int age;
	char name[29];
};
int main(void)
{
	People people = { 23,"minsu" };
}
다음을 보면 구조체는 선언하면서 멤버 변수에 값을 대입할 수 있다.
다음은 클래스를 살펴보자
class People {
	int age;
	char name[29];
};
int main(void)
{
	People people;
}이렇게만 정의한다면 main함수에서 People함수에 멤버 변수에 접근할 방법이 없다.
그렇다면 다음과 같이 선언하면 이 문제는 해결할 수 있다.
class People {
	int age;
	char* name;
public:
	void Myage(int num) {
		age = num;
	}
};
int main(void)
{
	People people;
	people.Myage(23);
}Myage()라는 함수를 보면 받아온 매개변수로 private에 선언된 age값을 바꿀 수 있다.
이를 정보 은닉화(Information Hiding)이라고 한다. 정보 은닉화에 대해서는 다음 블로그에서 더 다루겠다.
반응형
    
    
    
  'c++' 카테고리의 다른 글
| [c++]디폴트 복사 생성자 (0) | 2021.03.04 | 
|---|---|
| [c++] 문자열 동적 할당하여 저장하기 (0) | 2021.02.09 | 
| [c++] 상속자(Constructor)와 멤버 이니셜라이저(Member Initalizer) (0) | 2021.02.09 | 
| [c++] 정보 은닉 (Information Hiding) (0) | 2021.02.09 | 
| [c++] 함수의 오버로딩( Function Overloding) (0) | 2020.12.15 |