[C++] class와 struct (C# 하던 사람 관점)

Learning 

When: 1학년 11월 10일

 

How: 

C++에서도 C#처럼 struct가 있었는데, C#에선 값 형식은 스택에, 참조 형식 객체는 힙 메모리에 할당되지만 C++은 그런 규칙이 존재하지 않기 때문에 struct와 class의 차이가 있을지 궁금하여 공부해 보았습니다.

 

Understanding:

  • 간단 설명: C++에선 new 연산자를 통해 힙에 객체를 할당할 수 있는데, int, float 등 C#에선 박싱을 제외하면
    무조건 스택에 할당되던 값들도 그냥 int a = 1;을 하면 스택에, int* a = new int(1);을 하면 힙에
    할당되는 등 할당할 공간을 마음대로 정할 수 있습니다. 물론 클래스 객체도
     방금 선언한 초기화 방식으로 스택, 힙에 마음대로 할당할 수 있기 때문에 C#에서 스택에
    할당할 값 형식 객체를 만들기 위해 struct를 선언하지 않아도 됩니다.
  • 클래스와의 차이점: C++에선 C#과 다르게 struct와 class가 99.9% 일치합니다. 차이점도 간단한데,
    기본 접근 제한자, 즉 public, private 같은 접근 제한자를 붙이지 않았을 때 class는 자동으로
    private으로 선언되는 반면, struct는 public으로 선언됩니다. 정말 이것과 class, struct라는 이름의 차이 말고
    는 차이가 없습니다. 물론 언어적인 면에서 그렇다는 것이지 실제로 쓸 때는 인터페이스를 I로 시작하는
    것처럼 struct는 값을 저장할 때 쓴다는 관례가 있습니다.

 

Result: 처음에 내용을 알고 충격을 받았는데, C++과 C#이 언뜻 보면 비슷한 것 같으면서도 근본적인 메모리 시스템이 다르니까 저에겐 양의 탈을 쓴 늑대처럼 느껴진 순간이었습니다.

'C++' 카테고리의 다른 글

[C++] 포인터, delete  (0) 2025.12.01
[C++] 입력과 출력  (0) 2025.11.14
[C++] signed, unsigned 키워드, 2의 보수  (0) 2025.11.13
[C++] 전처리 지시문(Preprocessor directives)  (0) 2025.11.09
[C++] 빌드 (Build)  (0) 2025.11.08