Swift/기초
Swift 기초 다지기 - 구조체 (Struct) 그리고 클래스와의 차이점
박신혁
2024. 10. 7. 20:20
구조체 (Struct)
연관된 데이터(프로퍼티)와 기능(메서드)을 하나의 구조로 묶어 관리할 수 있는 값 타입
struct Person {
//프로퍼티
var name: String
var age: Int
// 메서드
func introduce(){
print("안녕하세요, 제 이름은 \(name) 이고, \(age)살 입니다.")
}
}
// 인스턴스 생성 (철수 17세 라는 인스턴스)
let person1 = Person(name: "철수", age: 17)
person1.introduce() // 안녕하세요, 제 이름은 철수 이고, 17살 입니다.
struct 키워드로 선언, 기본값을 지정 안 해도 됨
프로퍼티 - 구조체 내에서 정의된 변수나 상수
메서드 - 구조체 내에서 정의된 함수
값 타입
인스턴스를 다른 변수나 상수에 할당하면 값이 복사되어 각각 독립적인 복사본이 생성
따라서 한 곳에서 값을 변경해도 다른 곳에는 영향을 주지 않음
// 인스턴스 생성 (철수 17세 라는 인스턴스)
let person1 = Person(name: "철수", age: 17)
person1.introduce() // 안녕하세요, 제 이름은 철수 이고, 17살 입니다.
var person2 = person1
person2.name = "영희"
person2.introduce() // 안녕하세요, 제 이름은 영희 이고, 17살 입니다.
person1.introduce() // 안녕하세요, 제 이름은 철수 이고, 17살 입니다.
person2의 name을 "영희"로 변경해도 person1의 name은 "철수"로 영향받지 않은걸 확인할 수 있다.
참조 타입인 클래스 와의 가장 큰 차이
그 외에 클래스와의 차이점
클래스는 상속을 지원한다.
구조체는 상속을 지원하지 않는다.
클래스는 힙 메모리에 저장됨
구조체는 스택 메모리에 저장됨
클래스는 기본 생성자가 지원되지 않고 모든 프로퍼티가 초기화 돼야 한다.
구조체는 자동으로 기본 생성자를 제공하고 기본값을 제공하지 않아도 된다.
클래스는 소멸자를 가질 수 있다, 메모리 해제등을 처리
구조체는 소멸자를 가질 수 없다.
728x90