1. 구조체
값타입
2. 클래스
참조타입, 상속가능, 소멸자 가능, reflection등으로 동적 타입 검사 가능
3. 샘플 코드
// 구조체는 무조건 stack, 값 대입
struct SPoint
{
var x : Int = 0
var y : Int = 0
}
// class는 무조건 heap, 객체가 heap에 있고 cp1이 가리킴
class CPoint
{
var x : Int = 0
var y : Int = 0
}
var sp1 = SPoint()
var sp2 = sp1 // 값 복사
sp1.x = 10 // sp1만 바뀜
print(sp1.x, sp2.x)
var cp1 = CPoint()
var cp2 = cp1 // 참조 복사
cp1.x = 10 // cp2도 같이 바뀜
print(cp1.x, cp2.x)
var p1 = unsafeAddressOf(cp1) // 주소
var p2 = unsafeAddressOf(cp2) // 주소
print(p1,p2) // 같다
/*
c의 경우 타입을 사용자가 놓을 수 있다.
int n // stack
int* p = new int; // heap
*/
'교육 > Swift' 카테고리의 다른 글
[swift] property (0) | 2016.08.08 |
---|---|
[swift] init (0) | 2016.08.05 |
[swift] enum (0) | 2016.08.05 |
[swift] 클로저 (0) | 2016.08.04 |
[swift] 함수 고급 (0) | 2016.08.04 |