Equivalence operators overloading in Swift

class Point {
    var x: Int
    var y: Int
    
    init(x: Int, y: Int) {
        self.x = x
        self.y = y
    }
}

//global function
func == (left: Point, right: Point) -> Bool {
    return (left.x == right.x) && (left.y == right.y)
}

//global function
func != (left: Point, right: Point) -> Bool {
    return (left.x != right.x) || (left.y != right.y)
}

let p1 = Point(x: 1, y: 1)
let p2 = Point(x: 2, y: 2)
let p3 = Point(x: 1, y: 1)

let equal1 = p1 == p2
//equal1 is false
let equal2 = p1 == p3
//equal2 is true
let equal3 = p1 != p3
//equal3 is false