[c++] 함수 오버로딩과 클로저
C++ 프로그래밍에서 함수 오버로딩은 동일한 이름을 가진 여러 함수를 정의하는 개념입니다. 이는 함수의 이름이 같더라도 매개변수의 타입, 개수, 혹은 순서가 다를 경우에 다른 함수로 간주됩니다.
#include <iostream>
int add(int a, int b) {
return a + b;
}
float add(float a, float b) {
return a + b;
}
위 예시에서 add
함수는 int형 매개변수를 받는 버전과 float형 매개변수를 받는 버전 두 개가 정의되어 있습니다. 컴파일러는 호출된 함수에 대해 맞춤형으로 선택하게 됩니다.
클로저는 내부 함수에서 외부 범위에 있는 변수에 접근할 수 있는 함수입니다. C++에서는 람다 함수를 통해 클로저를 생성할 수 있습니다.
#include <iostream>
int main() {
int a = 5;
auto func = [&a](){
a++;
};
func();
std::cout << a; // 출력: 6
return 0;
}
위의 예시에서 func
는 a
를 레퍼런스로 가져와 값을 증가시키는 클로저 함수입니다. 클로저는 객체 지향 프로그래밍과 함수형 프로그래밍의 특징을 결합하여 사용자에게 유연한 프로그래밍 환경을 제공합니다.