>  기사  >  백엔드 개발  >  C++ 함수 오버로딩 및 재작성에서 다형성의 구현

C++ 함수 오버로딩 및 재작성에서 다형성의 구현

PHPz
PHPz원래의
2024-04-20 11:03:02585검색

C++의 다형성: 함수 오버로드를 사용하면 이름은 같지만 인수 목록이 다른 여러 함수가 호출될 때 인수 유형에 따라 실행되도록 선택됩니다. 함수 재정의를 사용하면 파생 클래스가 기본 클래스에 이미 존재하는 메서드를 재정의할 수 있으므로 개체 유형에 따라 다양한 유형의 동작을 달성할 수 있습니다.

C++ 函数重载和重写中多态性的体现

C++ 함수 오버로드 및 재작성에서 다형성 구현

다형성은 객체 지향 프로그래밍의 핵심 개념 중 하나입니다. 이를 통해 다양한 유형(파생 클래스)의 개체가 동일한 함수 호출에 다르게 응답할 수 있습니다. C++에서는 함수 오버로딩과 오버라이딩을 통해 다형성을 구현합니다.

함수 오버로딩

함수 오버로딩은 이름은 같지만 매개변수 목록이 다른 여러 함수를 의미합니다. 컴파일러는 실제로 호출될 때 인수 유형에 따라 올바른 함수를 선택합니다. 예를 들어 다음 코드는 원이나 직사각형의 면적을 계산할 수 있는 area() 함수를 오버로드합니다. area() 函数,它可以计算圆或矩形的面积:

class Circle {
public:
    double area(double radius) {
        return 3.14159 * radius * radius;
    }
};

class Rectangle {
public:
    double area(double length, double width) {
        return length * width;
    }
};

重写

重写是指派生类中重新定义基类中已存在的方法。它允许派生类提供自己的实现,从而实现不同类型的行为。例如,以下代码在派生类 Square 中重写了基类 Rectanglearea() 方法来计算正方形的面积:

class Rectangle {
public:
    virtual double area(double length, double width) {
        return length * width;
    }
};

class Square : public Rectangle {
public:
    virtual double area(double side) override {
        return side * side;
    }
};

实战案例

考虑一个图形库,其中有 Shape 基类和 CircleRectangleSquare 派生类。我们想创建一个函数 draw() 来绘制不同的图形。通过使用重载,我们可以提供不同的 draw() 方法来处理每种形状类型:

struct IShape {
    virtual void draw() = 0;
};

struct Circle : public IShape {
    void draw() override {
        // 代码绘制圆
    }
};

struct Rectangle : public IShape {
    void draw() override {
        // 代码绘制矩形
    }
};

struct Square : public Rectangle {
    void draw() override {
        // 代码绘制正方形
    }
};

在调用 draw()rrreee

🎜Overriding🎜🎜🎜Overriding은 파생 클래스가 면적을 재정의한다는 의미입니다. 기본 클래스의 존재 방법. 파생 클래스가 자체 구현을 제공하여 다양한 유형의 동작을 가능하게 합니다. 예를 들어, 다음 코드는 파생 클래스 Square에 있는 기본 클래스 Rectanglearea() 메서드를 재정의하여 면적을 계산합니다. 정사각형: 🎜rrreee🎜 🎜실용 사례🎜🎜🎜 Shape 기본 클래스와 Circle, Rectangle가 있는 그래픽 라이브러리를 생각해 보세요. Square 파생 클래스. 다양한 모양을 그리는 draw() 함수를 만들고 싶습니다. 오버로드를 사용하면 각 모양 유형을 처리하는 다양한 draw() 메서드를 제공할 수 있습니다. 🎜rrreee🎜 draw() 메서드를 호출하면 C++에서 올바른 함수를 선택합니다. 개체 유형에 대한 버전입니다. 이를 통해 명시적인 변환이나 캐스트 없이도 다양한 유형의 그래픽을 처리하는 일반 코드를 작성할 수 있습니다. 🎜

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

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