클래스와 매우 유사
어떤 대상을 추상화한 데이터 구조
<aside> ⛺ 구조체의 구조
struct 구조체이름
{
}
</aside>
주의점!!
구조체의 필드는 초기화 할 수 없다.
생성자 안에서 반드시 모든 필드들을 초기화 해줘야한다
상속 불가능 / 인터페이스 장착은 가능
클래스와 결정적인 차이점 : 구조체 = 값 형(int, float …) / 클래스 = 참조형(class, string …)
구조체 예시
struct Point
{
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
void Start()
{
Point point1 = new Point(1,1);
Point point2 = point1;
// point1 -> (1,1) point2 -> (1,1)
point2.x = 2;
point2.y = 2;
// point1 -> (1,1) point2 -> (2,2)
}
point2는 point1의 값을 그냥 복사 해 온 것이기 때문에 point2의 값을 변경해도 point1에 영향을 미치지 않음
클래스 예시
class Point
{
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
void Start()
{
Point point1 = new Point(1,1);
Point point2 = point1;
// point1 -> (1,1) point2 -> (1,1)
point2.x = 2;
point2.y = 2;
// point1 -> (2,2) point2 -> (2,2)
}
point1과 point2는 같은 객체를 가리키고 있기 때문에 point2의 값을 변경하면 point1의 값도 변경된다
구조체는 스택에 만들어지고 클래스는 힙에 만들어진다
구조체에서는 객체를 생성하면 스택에 그냥 메모리를 똑같이 더 잡게 된다