[Swift 기초] 연산자 오버로딩

2023. 7. 11. 01:25Swift 기초 정리

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 쉽게, 더 쉽게

https://www.yes24.com/Product/Goods/17652267

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