본문 바로가기
C++/클래스

[C++] 클래스와 구조체의 차이

by bigpicture 2022. 8. 18.
반응형

클래스와 구조체의 차이를 설명하기 위해 구조체를 하나 선언하겠습니다. 

struct person
{
    char sex;
    int age;
    char job[20];
    float height;
    float weight;
};


헬스장 회원정보를 저장하는 구조체입니다. 회원 한명의 구조체변수를 선언하는 방법은 아래와 같습니다. 이를 '초기화'라고 부릅니다. 초기 값을 입력했기 때문입니다. 

int main()
{
    struct person kim={'M',28,"teacher",178,68};
};


클래스는 구조체에서 몇가지 기능을 추가한 것이라고 할 수 있습니다. 선언방법은 아래와 같이 동일합니다. struct 대신 class 라고 적으면 됩니다. 

class person
{
    char sex;
    int age;
    char job[20];
    float height;
    float weight;
};


하지만 아래와 같이 값을 초기화하려고 하면 오류가 발생합니다.

int main()
{
    class person kim={'M',28,"teacher",178,68};
};


클래스가 갖고 있는 접근여부 결정 기능 때문입니다. 클래스에서는 클래스 맴버에 접근 할 수 있는지 없는지 여부를 결정할 수 있습니다. 디폴트 값은 '접근불가'입니다. 

클래스 맴버의 접근 여부를 결정하는 코드를 '접근 지시자'라고 합니다. 아래와 같이 세 가지가 있습니다. 

private : 클래스 내부에서만 접근가능
public : 외부에서도 접근가능
protected : 상속관계인 경우 유도클래스에서 접근가능


구조체는 클래스에서 모든 맴버가 public 으로 설정된 것이라 할 수 있습니다. 

반응형

댓글