9-2. 클래스(class)

클래스와 참조 타입(reference type)

클래스는 참조타입이다. 값 타입과 반대로 참조타입은 변수 또는 상수에 할당되거나 함수로 전달될 때 복사되지 않는다. 복사본 대신 존재하는 같은 인스턴스에 대한 참조가 사용된다.

let tenEighty = VideoMode()
tenEighty.resolution = hd
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0

//다음의 예시는 새로운 상수를 선언하고 VideoMode의 클래스 인스턴스를 참조하도록 설정했다.
//그러면 이제 클래스에 유저가 원하는 데이터들을 써 넣은 새로운 붕어빵 하나가 생겼다.

let alsoTenEighty = tenEighty
alsoTenEighty.,frameRate = 30.0

//클래스는 참조 타입이기 때문에 두개의 상수는 실질적으로 같은 VideoMode인스턴스를 참조한다.
//실제로는 같은 하나의 인스턴스에 tenEighty랑 alsoTenEighty라는 이름을 가지고 있는 것이다.

print(tenEighty.frameRate)
//다음과 같은 경우 30을 출력한다. 25.0을 출력하지 않는다.

식별 연산자

  1. 클래스는 참조 타입이므로 클래스의 같은 단일 인스턴스에 참조하는 여러개의 상수와 변수가 가능하다. 구조체와 열거형은 상수, 변수 및 함수에 전달될 때 항상 복사되므로 클래스와 다르다. 상수들이 같은 인스턴스를 참조하는지에 대해서 부울 값을 통해 식별이 가능하다.
if tenEighty == alsoTenEighty {
	print("They refers to the same class!"
}
//두 상수가 같은 클래스를 참조한다고 출력된다. 다음과 같이 조건문을 통해서 확인 가능하다.

좋은 웹페이지 즐겨찾기