[Swift 기초] 연산자 오버로딩
2023. 7. 11. 01:25ㆍSwift 기초 정리
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
연산자 오버로딩
- 연산자 오버로딩(operator overloading): 연산자에 기능을 추가하는 기법
- 사용자가 생성한 열거형, 클래스, 구조체와 함께 사용할 때 더욱 두드러짐
- 구조체(structure): 간단한 값의 집합을 캡슐화하는 데 사용
- 속성과 메서드를 포함할 수 있다는 점에서 클래스와 유사
//3차원 벡터를 생성하는데 필요한 데이터 포인트를 저장하는 구조체 struct Vector{ var x = 0 var y = 0 var z = 0 } var v1 = Vector(x: 5, y: 8, z: 5) var v2 = Vector(x: 9, y: 4, z: 2) print(v1 + v2) //이항 연산자 '+'은(는) 2개의 'Vector' 피연산자에 적용할 수 없습니다.
- Vector 구조체의 덧셈 기능을 추가하기 위해 연산자를 오버로딩해야 한다.
struct Vector{ var x = 0 var y = 0 var z = 0 static func + (augend: Vector, addend: Vector) -> Vector { return Vector(x: augend.x + addend.x, y: augend.y + addend.y, z: augend.z + addend.z) } } var v3 = v1 + v2 print(v3) //Vector(x: 14, y: 12, z: 7) print(v3.x) //14
- static 인스턴스의 생성 없이 타입의 이름만 알면 호출 가능한 타입 메서드, 재정의 불가
- 연산자 오버로딩을 사용하면 코드의 유연성을 증가시켜서 표준 연산자를 사용해 더 많은 일을 할 수 있다.
오버로딩과 오버라이딩의 차이점
- 오버로딩(overloading): 같은 이름의 메서드가 매개변수, 리턴값을 다르게 하여 중복으로 선언하는 것
- 오버라이딩(overriding): 부모 클래스의 메소드 등을 물려받아 추가적인 기능을 확장하는 기능
Swift 쉽게, 더 쉽게
728x90
'Swift 기초 정리' 카테고리의 다른 글
[Swift 기초] 접근제어 (0) | 2022.04.13 |
---|---|
[Swift 코테 기초] 고차함수 (0) | 2022.04.12 |
[Swift 기초] 오류처리 (0) | 2022.04.11 |
[Swift 기초] 익스텐션 (0) | 2022.04.05 |
[Swift 기초] 프로토콜 (0) | 2022.04.05 |