프로그래밍기초/C++

[C++ Basic] # 04 C++ 함수 오버로딩(Overloding)

chunkind 2024. 11. 1. 12:39

 

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

동일한 이름의 함수를 매개변수의 개수나 타입, 순서를 다르게 하여 여러 개 정의하는 것을 의미합니다. 이를 통해 같은 이름의 함수를 다양한 상황에서 사용할 수 있게 해주며, 코드의 가독성을 높이고 재사용성을 향상시킵니다.

 

2. 함수 오버로딩 정상적인 예제

#include <iostream>
#include <string>

void Hello(void)
{
	std::cout << "Hello World!" << std::endl;
}

void Hello(std::string name)
{
	std::cout << name << "! Hello World!" << std::endl;
}

void Hello(std::string name, int age)
{
	Hello(name);
	std::cout << age << "살 이네요!!" << std::endl;
}

void Hello(int roofCount, std::string name)
{
	for (int i = 0; i < roofCount; i++)
	{
		std::cout << name << "! Hello World!" << std::endl;
	}
}

int main(void)
{
	Hello();
	std::cout << std::endl;
	Hello("홍길동");
	std::cout << std::endl;
	Hello("홍길동", 20);
	std::cout << std::endl;
	Hello(5, "홍길동");
	std::cout << std::endl;
	return 0;
}

 

결과값
Hello World!

홍길동! Hello World!

홍길동! Hello World!
20살 이네요!!

홍길동! Hello World!
홍길동! Hello World!
홍길동! Hello World!
홍길동! Hello World!
홍길동! Hello World!

 

3. 함수 오버로딩의 잘못된 예제

1) 리턴값만 다르게 할때

void Hello(void)
{
	// 코드...
}

int Hello(void)
{
	// 코드...
}

 

2) 함수 이름을 달리할때

int Add(int a, int b)
{
	// 코드...
}

int Add(int c, int d)
{
	// 코드...
}

 

3) 디폴트값을 준다고 해서 함수 오버로딩이 되지 않습니다.

#include <iostream>
#include <string>


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

int Add(int a, int b = 1) // 함수 중복 선언 에러.. 오버로딩 되지 않는다.
{
	return a + b;
}

int main(void)
{
	int result = Add(5, 4);
	int result2 = Add(5); // 에러
}

 

반응형