가장 명확한 차이점이자 가장 크리티컬한 차이점은 class는 참조 타입이고 struct는 값 타입이다.
class SimpleClass{
var count:Int = 0
deinit{
print("할당 해제")
}
}
struct SimpleStruct{
var count:Int = 0
}
var c1 = SimpleClass()
var c2 = c1
var c3 = c1
c1.count=1
print(c1.count)
print(c2.count)
var s1 = SimpleStruct()
var s2 = s1
var s3 = s1
s1.count=1
print(s1.self)
print(s2.self)
/*결과
1
1
SimpleStruct(count: 1)
SimpleStruct(count: 0)
*/
클래스는 인스턴스의 참조를 하게되고
구조체는 구조체의 값이 복사되는 것을 볼 수 있다.
구조체는 스텍영역에 잡히고 클래스인스턴스는 힙메모리에 할당된다.
구조체는 상속을 지원하지 않는다.