>  기사  >  백엔드 개발  >  실제로 C++ 함수 재작성: 하위 클래스별 함수를 구현하는 요령

실제로 C++ 함수 재작성: 하위 클래스별 함수를 구현하는 요령

WBOY
WBOY원래의
2024-05-01 13:36:02907검색

함수 재작성을 통해 하위 클래스는 기본 클래스와 동일한 이름의 함수를 재정의하여 하위 클래스별 기능을 구현할 수 있습니다. 이름 조회 및 유형 일치를 기반으로 하위 클래스가 동일한 이름의 함수를 정의하면 기본 클래스 함수가 ​​다시 작성됩니다. 이를 통해 하위 클래스는 서로 다른 구현을 제공할 수 있습니다. 예를 들어 예제의 Circle 및 Rectangle 클래스는 자체 면적을 계산하기 위해 Shape 클래스의area() 함수를 재정의합니다.

C++ 函数重写实战:实现子类专属功能的妙招

C++ 함수 재작성: 하위 클래스별 함수 구현

함수 재작성은 C++의 중요한 메커니즘으로, 이를 통해 하위 클래스는 기본 클래스에서 동일한 이름을 가진 함수의 동작을 재정의할 수 있습니다. 이는 하위 클래스에 특정한 특정 기능을 정의하는 데 유용합니다.

원리

함수 재작성은 이름 조회 및 유형 일치 규칙을 기반으로 합니다. 함수가 호출되면 컴파일러는 범위에서 이름이 일치하는 함수를 검색합니다. 오버로드된 함수가 여러 개 발견되면 가장 일치하는 원칙이 선택에 사용됩니다.

하위 클래스가 기본 클래스와 동일한 이름의 함수를 정의하는 경우 하위 클래스의 함수가 기본 클래스의 함수를 재정의합니다. 이를 통해 하위 클래스는 기본 클래스와 다른 구현을 제공할 수 있습니다.

실용 사례

일반 모양을 나타내는 Shape 기본 클래스가 있는 시나리오를 생각해 보세요. 파생 클래스 CircleRectangle은 각각 원과 직사각형을 나타냅니다. 우리는 이 도형들의 면적을 계산해야 합니다. Shape 基类,表示一个通用形状。派生类 CircleRectangle 分别表示圆形和矩形。我们需要计算这些形状的面积。

基类 Shape

class Shape {
public:
    virtual double area() const = 0;  // 纯虚函数
};

派生类 Circle

class Circle : public Shape {
public:
    Circle(double radius) : radius(radius) {}

    double area() const override {
        return M_PI * radius * radius;
    }

private:
    double radius;
};

派生类 Rectangle

class Rectangle : public Shape {
public:
    Rectangle(double width, double height)
        : width(width), height(height) {}

    double area() const override {
        return width * height;
    }

private:
    double width, height;
};

使用

我们可以使用这些类来计算不同形状的面积:

int main() {
    Circle circle(5.0);
    Rectangle rectangle(3.0, 4.0);

    std::cout << "Area of circle: " << circle.area() << std::endl;
    std::cout << "Area of rectangle: " << rectangle.area() << std::endl;

    return 0;
}

输出:

Area of circle: 78.5398
Area of rectangle: 12.0

在这个示例中,CircleRectangle 类重写了 Shape 类中定义的 area()

🎜기본 클래스 Shape🎜🎜rrreee🎜🎜파생 클래스 Circle🎜🎜rrreee🎜🎜Derived 클래스 Rectangle🎜🎜rrreee🎜🎜을 사용하여 🎜🎜🎜다음 클래스를 사용하여 다양한 도형의 면적을 계산할 수 있습니다. reee🎜 출력 : 🎜rrreee 🎜이 예에서 CircleRectangle 클래스는 Shape에 정의된 area() 함수를 재정의합니다. > 수업 . 이를 통해 각 모양에 특정한 면적 계산 논리를 구현할 수 있습니다. 🎜

위 내용은 실제로 C++ 함수 재작성: 하위 클래스별 함수를 구현하는 요령의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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