[kotlin] 연산자 오버로딩

코틀린은 연산자 오버로딩을 지원하여 사용자 정의 데이터 타입에 대해 기본 연산자를 재정의할 수 있습니다. 연산자 오버로딩을 통해 사용자가 만든 클래스나 데이터 타입에 대해 +, -, *, /와 같은 연산자를 적용할 수 있습니다.

연산자 오버로딩의 기본 구조

코틀린에서 연산자를 오버로딩하기 위해서는 operator 키워드를 사용합니다. 아래는 간단한 Complex 클래스에 대해 + 연산자를 오버로딩한 예제입니다.

class Complex(val real: Int, val imaginary: Int) {
    operator fun plus(other: Complex): Complex {
        return Complex(real + other.real, imaginary + other.imaginary)
    }
}

위의 예제에서 operator 키워드를 사용하여 plus 함수를 정의함으로써 + 연산자를 오버로딩했습니다.

다양한 연산자 오버로딩 예제

코틀린에서는 다양한 연산자에 대해 오버로딩을 지원합니다. 예를 들어, minus, times, div, rem, inc, dec 등의 연산자에 대해 오버로딩이 가능합니다.

class Point(var x: Int, var y: Int) {
    operator fun plus(other: Point): Point {
        return Point(x + other.x, y + other.y)
    }

    operator fun minus(other: Point): Point {
        return Point(x - other.x, y - other.y)
    }

    operator fun times(scale: Int): Point {
        return Point(x * scale, y * scale)
    }
}

요약

코틀린에서의 연산자 오버로딩을 통해 사용자 정의 데이터 타입에 대해 다양한 연산자를 재정의할 수 있습니다. 이를 통해 코드의 가독성을 높이고, 다양한 연산을 보다 간단하게 표현할 수 있습니다.

더 많은 자세한 정보는 코틀린 문서를 참고하세요.