[c++] 함수 오버로딩과 사용자 정의 변환 함수

C++는 다형성을 지원하는 객체지향 프로그래밍 언어로, 함수 오버로딩(function overloading)과 사용자 정의 변환 함수(user-defined conversion function)를 통해 다형성을 제공합니다.

함수 오버로딩

함수 오버로딩은 같은 이름을 가진 여러 함수가 서로 다른 인자를 받을 수 있도록 하는 기능입니다. 예를 들어, add라는 함수를 정수형과 실수형을 모두 지원하고 싶을 때, 아래와 같이 오버로딩할 수 있습니다.

int add(int a, int b) {
    return a + b;
}

float add(float a, float b) {
    return a + b;
}

이렇게 하면 add 함수를 호출할 때 전달하는 인자의 자료형에 따라 적절한 오버로딩된 함수가 선택됩니다.

사용자 정의 변환 함수

사용자 정의 변환 함수는 클래스나 구조체에서 특정 자료형으로의 변환을 정의하는 기능입니다. 예를 들어, 섭씨를 화씨로 변환하는 Temperature 클래스가 있다고 가정해봅시다. 이 클래스에 대해 사용자 정의 변환 함수를 정의할 수 있습니다.

class Temperature {
private:
    float celsius;
    
public:
    Temperature(float c) : celsius(c) {}
    
    operator float() {
        return celsius * 9 / 5 + 32;
    }
};

이제 Temperature 객체를 실수형으로 변환하고 싶을 때, 사용자 정의 변환 함수가 호출됩니다.

Temperature temp_celsius(25.0);
float temp_fahrenheit = temp_celsius;  // 사용자 정의 변환 함수 호출

이렇게 하면 temp_fahrenheit 변수는 섭씨를 화씨로 변환한 값으로 초기화됩니다.

함수 오버로딩과 사용자 정의 변환 함수를 적절히 활용하여 C++에서 다형성을 효과적으로 구현할 수 있습니다.

이상으로 C++의 함수 오버로딩과 사용자 정의 변환 함수에 대해 알아보았습니다. 본문이 도움이 되었기를 바라며, 추가 질문이 있으시다면 언제든지 문의해 주십시오.

References

주의: 이 페이지는 예시를 위한 것으로 실제로는 동작하지 않습니다.