9-2. クラス(class)


クラスと参照タイプ(参照タイプ)


クラスは参照タイプです.値タイプとは対照的に、変数または定数に割り当てられたり、関数に渡されたりすると、参照タイプはコピーされません.レプリカへの参照ではなく、存在する同じインスタンスへの参照です.
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을 출력하지 않는다.

識別演算子

  • クラスは参照タイプであるため、クラスの同じインスタンスで複数の定数および変数を参照できます.定数、変数、関数に渡すと常にコピーされるため、構造体および列挙形式はクラスとは異なります.定数が同じインスタンスを参照しているかどうかをブール値で識別できます.
  • if tenEighty == alsoTenEighty {
    	print("They refers to the same class!"
    }
    //두 상수가 같은 클래스를 참조한다고 출력된다. 다음과 같이 조건문을 통해서 확인 가능하다.