본문 바로가기
TIL

구조체(struct) vs 클래스(class)

by vvin39 2025. 4. 14.

내일배움캠프 6일차 TIL

📌 구조체(struct) vs 클래스(class)

\    구조체 (struct)    클래스 (class)
   저장 방식    값 타입    참조 타입
   복사 방식    복사하면 값 자체가 복제됨    복사하면 주소만 복제됨
   기본 생성자    사용자가 기본 생성자 정의 못 함    자유롭게 생성자 정의 가능
   상속    다른 타입으로부터 상속 불가    다른 클래스 상속 가능

 

언제 struct를 쓰는 게 좋을까?

  • 데이터 크기가 작고 고정되어 있는 경우 (Vector2, Color 등)
  • 값 자체로만 의미 있는 경우 (예: 좌표, 크기, 색상 등)
  • 생성/파괴가 잦아서 힙 할당이 부담되는 경우
public struct Point
{
    public int x, y;
    public Point(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

언제 class를 쓰는 게 좋을까?

  • 데이터 양이 크거나, 공유, 참조가 필요한 경우
  • 상속/다형성이 필요한 경우
  • 상태 변경이 필요한 복잡한 객체일 때
public class Player
{
    public string name;
    public int hp;

    public Player(string name, int hp)
    {
        this.name = name;
        this.hp = hp;
    }
}

 

헷갈리는 예시

struct MyStruct { public int value; }
class MyClass { public int value; }

MyStruct a = new MyStruct { value = 5 };
MyStruct b = a;
b.value = 10;
// a.value == 5 (서로 다른 값)

MyClass c = new MyClass { value = 5 };
MyClass d = c;
d.value = 10;
// c.value == 10 (같은 객체 참조)

 

💡 기억 포인트

  • 구조체는 데이터 자체를 담는 용도, 클래스는 동작+상태를 가진 복합적인 객체용
  • Unity 같은 곳에서 Vector3나 Color가 struct인 이유도 바로 자주 쓰이고, 값으로써 독립적이어야 하기 때문

 



'TIL' 카테고리의 다른 글

델리게이트(Delegate)와 이벤트(Event)  (0) 2025.04.16
인터페이스 vs 추상 클래스  (0) 2025.04.15
내일배움캠프 5일차 TIL  (0) 2025.04.11
내일배움캠프 4일차 TIL  (0) 2025.04.10
내일배움캠프 3일차 TIL  (0) 2025.04.09

최근댓글

최근글

skin by © 2024 ttuttak