Value Types vs Reference Types

작성일

Value Types vs Reference Types

struct PositionValue {
  var x = 0.0
  var y = 0.0
}

class PositionObject {
  var x = 0.0
  var y = 0.0
}

var v = PositionValue // 0으로 초기화
var o = PositionObject // 0으로 초기화

var v2 = v // 0으로초기화
var o2 = o // 0으로 초기화

똑같이 복사해서 넣어본 후, 코드를 작성해 보면,

v2.x = 12
v2.y = 34

v // x=0,  y=0
v2 // x=12, y=34

값형식으로 v2를 바꿔도 v에는 아무런 영향을 미치지 않는다.
하지만 class는

o2.x = 12
o2.y = 34

o // x=12, y=34
o2 // x=12, y=34

참조형식이라 o2를 바꾸면 o도 같이 바뀌어 영향을 끼친다.
원본을 저장하기 때문이다.