[Swift] 클래스와 구조체의 차이

ds-k.mo·2022년 4월 29일
0

Swift

목록 보기
10/22

클래스와 구조체의 공통점

  • 값을 저장할 프로퍼티를 선언할 수 있다.
  • 함수적 기능을 하는 메서드를 선언할 수 있다.
  • 내부값에 .을 사용하여 접근할 수 있다.
  • 생성자를 사용해 초기 상태를 설정할 수 있다.
  • extension을 사용하여 기능을 확장할 수 있다.
  • Protocol을 채택하여 기능을 설정할 수 있다.

클래스와 구조체의 차이점

  1. 클래스
  • 참조 타입
  • 할당 또는 파라미터 전달 시에 객체를 가리키고 있는 메모리의 주소 값이 복사
  • Heap Memory에 저장되어 속도가 느리다.
  • 상속이 가능
  1. 구조체
  • 값 타입
  • 할당 또는 파라미터 전달 시 value copy가 일어남
  • Stack Memory에 저장되어 속도가 빠르다.
  • 상속이 불가능

코드 예시

class SomeClass {
    var count : Int = 0
}

var class1 = SomeClass()
var class2 = class1
var class3 = class1

class3.count = 2
class1.count // 2 , 참조 타입이기 때문에 복사본과 원본값이 같게 된다.

struct SomeStruct {
    var count : Int = 0
}

var struct1 = SomeStruct()
var struct2 = struct1
var struct3 = struct1

struct2.count = 2
struct3.count = 3

struct1.count // 0
struct2.count // 2
struct3.count // 3 , 값 타입이기 때문에 매번 새로운 메모리가 할당되어서 값을 변경해도 다른 구조체에 영향을 주지 않는다.

0개의 댓글