Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 오버로딩 완벽 정리: 함수 오버로딩과 연산자 오버로딩

C#에서 오버로딩(Overloading)은 같은 이름을 가진 함수나 연산자를 여러 방식으로 정의할 수 있게 해주는 강력한 기능입니다. 오버로딩은 크게 두 가지 유형으로 나뉩니다.

1. 함수 오버로딩(Function Overloading)

함수 오버로딩이란 동일한 스코프(범위) 내에서 같은 이름의 함수에 대해 여러 개의 정의를 만드는 것을 말합니다. 단, 각 함수의 정의는 서로 구별되어야 하며, 이는 매개변수 목록의 타입 또는 매개변수의 개수가 달라야 합니다.

예를 들어, 아래와 같이 mulDisplay라는 동일한 함수 이름으로 매개변수 개수만 다른 세 가지 버전을 정의할 수 있습니다.

public static int mulDisplay(int one, int two) { }
public static int mulDisplay(int one, int two, int three) { }
public static int mulDisplay(int one, int two, int three, int four) { }

컴파일러는 호출 시 전달되는 인자의 개수와 타입을 기준으로 어떤 함수를 실행할지 자동으로 판단합니다. 이를 통해 하나의 기능을 다양한 입력 형태로 유연하게 처리할 수 있습니다.

2. 연산자 오버로딩(Operator Overloading)

연산자 오버로딩은 사용자가 정의한 클래스나 구조체에 대해 +, -, * 같은 연산자의 동작을 재정의하는 기능입니다. 오버로드된 연산자는 특별한 이름을 가진 함수로 취급되며, operator 키워드 뒤에 정의하려는 연산자 기호를 붙여 선언합니다.

다음은 Box 클래스에 + 연산자를 오버로딩하여 두 객체의 크기를 더하는 예제입니다.

public static Box operator+ (Box b, Box c) {
    Box box = new Box();
    box.length = b.length + c.length;
    box.breadth = b.breadth + c.breadth;
    box.height = b.height + c.height;
    return box;
}

이렇게 정의하면 Box 객체끼리 + 연산자를 사용해 직관적으로 더하기 작업을 수행할 수 있습니다. 연산자 오버로딩은 반드시 public static으로 선언해야 하며, 코드의 가독성과 직관성을 높이는 데 큰 도움이 됩니다.

정리

  • 함수 오버로딩: 같은 이름의 함수를 매개변수의 타입이나 개수를 다르게 하여 여러 번 정의
  • 연산자 오버로딩: operator 키워드를 사용해 사용자 정의 타입에 연산자 동작을 재정의

두 기능 모두 코드의 재사용성과 가독성을 향상시키는 데 활용되므로, 상황에 맞게 적절히 사용하는 것이 좋습니다.