교육/Swift
[swift] 구조체와 클래스
삶의안식처
2016. 8. 5. 15:25
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
*/