산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++ 함수 오버로딩: 실전 가이드

C++ 함수 오버로딩

C++에서 같은 이름인데 시그니처가 다른 여러 함수를 정의하는 오버로딩 기법을 실전 예제로 익혀보세요.

C++에서는 **매개변수 목록이 타입, 개수, 순서 중 하나라도 다르면** 같은 이름의 함수를 여러 개 정의할 수 있습니다. 이를 오버로드된 함수(Overloaded Functions)라 합니다.

예:

// 같은 이름, 다른 인수
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }

위 네 선언 모두 유효한 오버로드 세트입니다. **반환 타입은 오버로드 해소에 영향을 주지 않습니다.** 오직 매개변수 목록만 중요합니다. 예:

// 컴파일 에러: 동일한 시그니처
int test(int a) { }
double test(int b){ }

두 함수 모두 이름, 타입, 개수가 같아서 컴파일러가 중복으로 간주해 거부합니다.


예제 1: 매개변수 타입 다르게 오버로딩

// int와 float의 절댓값 계산 오버로딩
#include <iostream>
using namespace std;
// float 버전
float absolute(float var){
    return (var < 0.0f) ? -var : var;
}
// int 버전
int absolute(int var){
    return (var < 0) ? -var : var;
}
int main(){
    cout << "Absolute value of -5 = " << absolute(-5) << endl;
    cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl;
    return 0;
}

실행 결과

Absolute value of -5 = 5
Absolute value of 5.5 = 5.5

이 프로그램은 absolute()를 오버로딩했으며, 컴파일러는 인수 타입에 따라 적절한 버전을 선택합니다.


예제 2: 매개변수 개수 다르게 오버로딩

#include <iostream>
using namespace std;
// 두 매개변수 버전
void display(int var1, double var2){
    cout << "Integer: " << var1;
    cout << " & Double: " << var2 << endl;
}
// 단일 double 매개변수
void display(double var){
    cout << "Double: " << var << endl;
}
// 단일 int 매개변수
void display(int var){
    cout << "Integer: " << var << endl;
}
int main(){
    int a = 5;
    double b = 5.5;
    display(a);
    display(b);
    display(a, b);
    return 0;
}

실행 결과

Integer: 5
Double: 5.5
Integer: 5 & Double: 5.5

display() 호출이 인수의 개수와 타입에 따라 올바른 오버로드로 해석됩니다.


참고: sqrt() 같은 표준 라이브러리 함수는 int, float, double 등 다양한 타입으로 중복 오버로딩되어 개발자에게 유연성을 제공합니다.

C 언어

  1. C# 메서드 오버로딩 마스터하기: 개념, 예제, 모범 사례
  2. C# 생성자 오버로딩 마스터하기: 유연한 클래스 설계
  3. C++ 연산자 마스터하기: 유형별 완벽 가이드와 실전 예제
  4. C++ 주석: 가독성 높고 유지보수하기 좋은 코드 작성법
  5. C++ 배열을 함수에 전달하는 방법: 실전 가이드
  6. C++ 프렌드 함수와 프렌드 클래스: 접근 제어 마스터하기
  7. C 언어에서 1차원 및 2차원 배열을 함수에 전달하는 방법 – 실전 가이드
  8. C++ 연산자 오버로딩 실전 가이드: 문법, 접근법, 코드 예제
  9. C++ 함수 완전 정복: 실전 코드 예제로 이해하기
  10. C 함수 마스터: 선언, 정의, 호출, 인자 전달(값/참조), 재귀