C++/C++ : Study

C++ Overloading 오버로딩

더블유제이플로어 2024. 9. 9. 00:48

객체지향 프로그래밍(Object Oriented Programming)의 특징
 오버로딩, 오버라이딩에서 다형성(Polymorphism)을  알 수 있다.

오버로딩이란? 

다중 정의는 정수, 식별자, 연산자에 대한 성질로 동일한 유효 범위 내에서도 여러 가지 뜻을 가질 수 있다.
 [네이버 지식백과] 오버로딩 [컴퓨터인터넷IT용어대사전]

 

함수 오버로딩 (1)

●  서로 다른 매개변수 리스트를 갖는 동일한 이름의 함수 정의

●  추상화의 한 예시

●  다형성의 한 예시

    ≫ 유사한 개념의 함수를 다른 타입에 대해 정의한다.

●  객체 지향 프로그램 구현을 위한 중요한 기법 중 하나

●  컴파일러는 주어진 인수와 함수들의 파라메터 정의를 기반으로 개별적인 함수를 구분 할 수 있어야 한다.

 

 

#include <iostream>
using namespace std;

int add_number(int, int); // 함수의 이름은 add_number(int, int) 까지 이름으로 파악한다.
double add_number(double, double);
int main()
{
	// 변수는 똑같은 이름을 선언할 수 없다.
    int a;
    int a; // Error
    
    cout << add_number(10, 20) << endl;
    cout << add_number(10.12, 20.23) << endl;
    return 0;
}


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

double add_number(double a, double b)
{
    return a + b;
}

 

20.23 에 마우스 커서를 대면 (double)(20.23000000000000043)이 나온다. VS2022에서는 나오지 않는다.

 

10.0 + 20.0 과 10 + 20 다를 수 있다.

함수 오버로딩 (2)

 ●  반환 타입에 따라 구분은 할 수 없다는 것에 주의할 것

int get_value();
double get_value();

...

cout << get_value() << endl; // ???

 

C#도 동일하기에 반환값이 다른 동작이 동일한 함수를 작성하고 싶을 때,

반환형에 맞게 매개변수라도 변경해주어야 한다.

 

 

 

출처 : 

https://velog.io/@dallok97/%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9

 

오버로딩(Overloading) 오버라이딩(Overriding)

🔍 오버로딩, 오버라이딩

velog.io

 

https://youtu.be/J8Bkh-jqqHg?si=BbEU3E20Fv1Us3oB