struct와 class의 진짜 차이 2가지struct는 public, class는 privatestruct는 public 상속, class는 private 상속public: 한 줄로 해결되는 상황과, 상속 선언을 고쳐야 하는 상황을 구분할 수 있다.struct의 멤버는 기본이 publicclass의 멤버는 기본이 privatestruct Knight1 {
int hp; // public (기본)
};
class Knight2 {
int hp; // private (기본)
};
정리:
struct/class가 기능적으로 “다른 언어 요소”가 아니라, 기본값이 다를 뿐입니다.struct에서도 private:를 쓸 수 있고, class에서도 public:을 쓸 수 있습니다.상속을 아무 것도 안 붙이고 쓰면 기본값이 다릅니다.
struct Derived : Base → 기본이 public 상속class Derived : Base → 기본이 private 상속class Base {
public:
void Foo() {}
};
struct SDerived : Base { // public 상속 (기본)
};
class CDerived : Base { // private 상속 (기본)
};
이 차이 때문에:
CDerived d; d.Foo(); 가 “접근할 수 없습니다”로 막힐 수 있습니다.class CDerived : public Base 처럼 상속 지정자를 명시하는 것입니다.관례(많이 쓰는 스타일)는 이렇습니다.
struct: “데이터 묶음(값 타입)” 중심 class: “규칙(불변식) + 행동(함수)” 중심 중요:
public/protected/private를 통해 의도를 드러내는 설계를 하는 것입니다.public:이 있는지 확인: public Base로 상속을 명시했는지 확인예:
class Knight2 {
public:
int hp = 0;
};
int main()
{
Knight2 k2;
k2.hp = 10; // OK
}
struct와 class의 차이 2가지는 무엇인가?public: 문제인지 public 상속 문제인지 어떻게 구분할까?