[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;
}

위의 예시에서 funca를 레퍼런스로 가져와 값을 증가시키는 클로저 함수입니다. 클로저는 객체 지향 프로그래밍과 함수형 프로그래밍의 특징을 결합하여 사용자에게 유연한 프로그래밍 환경을 제공합니다.

참고 자료

  1. C++ 함수 오버로딩
  2. C++ 클로저 람다