c++

[c++] 클래스(class)란?

TIM_0529 2021. 2. 5. 07:03
반응형

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)이라고 한다. 정보 은닉화에 대해서는 다음 블로그에서 더 다루겠다.

 

 

 

 

 

 

 

 

 

반응형