C++에서 함수는 코드의 재사용성을 높이고 프로그램을 구조화하는 중요한 도구입니다. 함수는 특정 작업을 수행하는 코드 블록을 정의하고 호출하여 사용할 수 있습니다. 함수에는 매개변수와 반환값이 있을 수 있으며, 함수 오버로딩과 재귀 함수 등의 다양한 기능이 제공됩니다.
함수 정의 및 호출
함수 정의
함수는 반환 타입, 함수 이름, 매개변수 리스트, 그리고 함수 본문으로 구성됩니다.
#include <iostream>
// 반환 타입이 int인 함수 정의
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 5); // 함수 호출
std::cout << "Result: " << result << std::endl;
return 0;
}
위의 예제에서 add
함수는 두 개의 정수 매개변수를 받아서 그 합을 반환합니다.
함수 호출
함수는 함수 이름과 함께 필요한 매개변수를 전달하여 호출할 수 있습니다.
int result = add(3, 5); // add 함수를 호출하여 3과 5의 합을 반환받음
매개변수 및 반환값
함수는 매개변수를 통해 값을 전달받고, 반환 타입을 통해 값을 반환할 수 있습니다.
기본 매개변수
매개변수는 함수가 호출될 때 전달받는 값을 의미합니다.
#include <iostream>
void printSum(int a, int b) {
std::cout << "Sum: " << a + b << std::endl;
}
int main() {
printSum(3, 5); // printSum 함수를 호출하여 3과 5의 합을 출력
return 0;
}
반환값
함수는 return
키워드를 사용하여 값을 반환할 수 있습니다.
#include <iostream>
int multiply(int a, int b) {
return a * b;
}
int main() {
int result = multiply(4, 5); // multiply 함수를 호출하여 4와 5의 곱을 반환받음
std::cout << "Result: " << result << std::endl;
return 0;
}
함수 오버로딩
함수 오버로딩은 같은 이름의 함수를 여러 개 정의하되, 매개변수 리스트가 다르게 정의하는 것을 의미합니다.
#include <iostream>
// 정수를 더하는 함수
int add(int a, int b) {
return a + b;
}
// 실수를 더하는 함수
double add(double a, double b) {
return a + b;
}
int main() {
std::cout << "Integer sum: " << add(3, 5) << std::endl; // 정수 더하기
std::cout << "Double sum: " << add(2.5, 4.3) << std::endl; // 실수 더하기
return 0;
}
재귀 함수
재귀 함수는 함수가 자기 자신을 호출하는 것을 의미합니다. 재귀 함수는 반복적인 작업을 수행하는 데 유용합니다.
#include <iostream>
// 팩토리얼을 계산하는 재귀 함수
int factorial(int n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
std::cout << "Factorial of 5: " << factorial(5) << std::endl; // 5의 팩토리얼 계산
return 0;
}
인라인 함수
인라인 함수는 함수 호출 오버헤드를 줄이기 위해 컴파일러가 함수 호출을 해당 함수의 코드로 대체하는 것을 의미합니다. inline
키워드를 사용하여 정의합니다.
#include <iostream>
inline int square(int x) {
return x * x;
}
int main() {
std::cout << "Square of 4: " << square(4) << std::endl; // 4의 제곱 계산
return 0;
}
예제
아래는 다양한 함수 개념을 사용하는 예제입니다:
#include <iostream>
// 정수 두 개를 더하는 함수
int add(int a, int b) {
return a + b;
}
// 실수 두 개를 더하는 함수 (함수 오버로딩)
double add(double a, double b) {
return a + b;
}
// 팩토리얼을 계산하는 재귀 함수
int factorial(int n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
// 제곱을 계산하는 인라인 함수
inline int square(int x) {
return x * x;
}
int main() {
std::cout << "Integer sum: " << add(3, 5) << std::endl; // 정수 더하기
std::cout << "Double sum: " << add(2.5, 4.3) << std::endl; // 실수 더하기
std::cout << "Factorial of 5: " << factorial(5) << std::endl; // 5의 팩토리얼
std::cout << "Square of 4: " << square(4) << std::endl; // 4의 제곱
return 0;
}
이 예제는 함수 정의 및 호출, 매개변수 및 반환값, 함수 오버로딩, 재귀 함수, 인라인 함수 등을 모두 보여줍니다. C++ 함수의 다양한 개념을 이해하고 활용하는 데 도움이 될 것입니다.