클래스와 구조체의 공통점
- 값을 저장할 프로퍼티를 선언할 수 있다.
- 함수적 기능을 하는 메서드를 선언할 수 있다.
- 내부값에 .을 사용하여 접근할 수 있다.
- 생성자를 사용해 초기 상태를 설정할 수 있다.
- extension을 사용하여 기능을 확장할 수 있다.
- Protocol을 채택하여 기능을 설정할 수 있다.
클래스와 구조체의 차이점
- 클래스
- 참조 타입
- 할당 또는 파라미터 전달 시에 객체를 가리키고 있는 메모리의 주소 값이 복사
- Heap Memory에 저장되어 속도가 느리다.
- 상속이 가능
- 구조체
- 값 타입
- 할당 또는 파라미터 전달 시 value copy가 일어남
- Stack Memory에 저장되어 속도가 빠르다.
- 상속이 불가능
코드 예시
class SomeClass {
var count : Int = 0
}
var class1 = SomeClass()
var class2 = class1
var class3 = class1
class3.count = 2
class1.count
struct SomeStruct {
var count : Int = 0
}
var struct1 = SomeStruct()
var struct2 = struct1
var struct3 = struct1
struct2.count = 2
struct3.count = 3
struct1.count
struct2.count
struct3.count