클래스는 reference 타입이고 struct와 enum 는 value type입니다.
값 타입의 속성은 기본적으로 인스턴스 메서드 내에서 수정할 수 없습니다.
만약 수정해야하는 경우 mutating을 붙여주면 됩니다.
mutating 키워드를 사용한 메서드에서 프로퍼티를 변경하면 변경된 새로운 구조체를 인스턴스에 할당하게 된다.
(COW) -> thread safety 및 메모리 절약 ?.?
thread safety: 어떤 객체에 여러 스레드로부터 동시에 접근이 이루어져도 안전하다.