>  기사  >  백엔드 개발  >  함수 오버로딩 및 재작성과 C++ 람다 표현식의 상호 작용

함수 오버로딩 및 재작성과 C++ 람다 표현식의 상호 작용

WBOY
WBOY원래의
2024-04-20 10:30:02355검색

Lambda 표현식은 함수 오버로드 및 C++ 재작성과 상호 작용하여 유연하고 재사용 가능한 코드를 제공합니다. 람다 표현식은 오버로드된 함수로 작동할 수 있으므로 이름은 같지만 매개 변수가 다른 람다 표현식을 사용하여 기본 클래스에서 가상 함수를 재정의할 수도 있습니다. 함수 오버로드에 람다 식을 사용하면 다양한 데이터 유형이나 형태 계산에 대한 특정 함수 동작을 제공할 수 있습니다.

C++Lambda 表达式与函数重载和重写的交互

C++ 함수 오버로드 및 재작성과 Lambda 표현식의 상호 작용

C++에서 Lambda 표현식은 명명된 함수를 선언하지 않고도 함수를 정의하고 사용할 수 있게 해주는 익명 함수입니다. 함수 오버로딩 및 재작성과 함께 보다 유연하고 재사용 가능한 코드를 실행할 수 있는 기능을 제공합니다.

함수 오버로딩

함수 오버로딩을 사용하면 동일한 이름을 가진 함수가 다른 매개변수 유형과 숫자를 허용할 수 있습니다. 오버로드된 함수는 매개변수 목록을 기반으로 차별화되며 다양한 데이터 유형에 대한 특정 함수 동작을 코드에서 생성할 수 있습니다.

예:

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

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

이 예에서는 add라는 함수를 오버로드했습니다. 하나는 부동 소수점 덧셈용이고 다른 하나는 정수 덧셈용입니다. add 的函数,一个用于浮点数加法,另一个用于整数加法。

Lambda 表达式

Lambda 表达式使用 [] 括号表示,其中包含捕获列表(可选),后面是参数列表和函数体。

示例:

auto addLambda = [](double a, double b) { return a + b; };

此 Lambda 表达式表示了一个接受两个双精度浮点参数并返回其总和的函数。

函数重写

函数重写允许派生类覆盖基类中定义的函数。重写用于修改派生类中特定函数的行为,同时保留基类函数的名称和签名。

示例:

class Base {
public:
  virtual int add(int a, int b) {
    return a + b;
  }
};

class Derived : public Base {
public:
  int add(int a, int b) override {
    return a + b + 1;
  }
};

在示例中,Derived 类重写了 Base 类中的 add

Lambda 표현식

Lambda 표현식은 [] 괄호를 사용하여 표현됩니다. 여기에는 캡처 목록(선택 사항)과 인수 목록 및 함수 본문이 포함됩니다.
  • 예:
  • auto circleCircumference = [](double radius) { return 2 * M_PI * radius; };
    auto rectangleCircumference = [](double length, double width) { return 2 * (length + width); };
    
    double getCircumference(Shape shape) {
      if (shape.type == Circle) {
        return circleCircumference(shape.radius);
      } else if (shape.type == Rectangle) {
        return rectangleCircumference(shape.length, shape.width);
      } else {
        throw invalid_argument("Unknown shape type");
      }
    }
  • 이 람다 표현식은 두 개의 배정밀도 부동 소수점 인수를 받아들이고 그 합계를 반환하는 함수를 나타냅니다.
  • 함수 재정의

함수 재정의를 사용하면 파생 클래스가 기본 클래스에 정의된 함수를 재정의할 수 있습니다. 재정의는 기본 클래스 함수의 이름과 시그니처를 유지하면서 파생 클래스에서 특정 함수의 동작을 수정하는 데 사용됩니다.

예:

rrreee

예제에서 Derived 클래스는 Base 클래스의 add 함수를 재정의하여 Modified를 제공합니다. 행동의 경우 합계에 1을 더합니다. 🎜🎜🎜오버로딩 및 재작성이 포함된 Lambda 표현식🎜🎜🎜🎜🎜오버로딩이 포함된 Lambda 표현식: 🎜Lambda 표현식은 오버로드된 함수로 작동할 수 있으므로 동일한 범위에서 이름은 동일하지만 매개변수가 다른 Lambda 표현식을 사용할 수 있습니다. 🎜🎜🎜Lambda 표현식 및 재정의: 🎜Lambda 표현식을 사용하여 기본 클래스의 가상 함수를 재정의할 수 있습니다. 파생 클래스는 기본 클래스 함수 포인터에 람다 식을 할당하여 다양한 함수 동작을 제공할 수 있습니다. 🎜🎜🎜🎜실용 사례🎜🎜🎜다양한 도형의 둘레를 계산해야 하는 프로그램을 생각해 보세요. 람다 식을 정의하여 다양한 모양의 둘레를 계산하고 함수 오버로드에 사용할 수 있습니다. 🎜rrreee🎜 이 예에서 람다 식을 사용하면 다양한 모양에 대한 둘레 계산을 유연하게 정의하고 함수 오버로드에 통합할 수 있으므로 확장 가능하고 재사용 가능한 코드를 제공할 수 있습니다. 🎜

위 내용은 함수 오버로딩 및 재작성과 C++ 람다 표현식의 상호 작용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.