오버로딩과 재정의는 C++에서 다른 개념입니다. 오버로드를 사용하면 다른 매개변수 목록을 사용하여 동일한 이름을 가진 함수를 생성할 수 있으며, 재정의를 사용하면 파생 클래스 함수가 동일한 이름을 가진 기본 클래스 함수를 재정의할 수 있습니다. 오버로딩의 경우 함수 이름은 동일하지만 매개변수 목록이 다릅니다. 재정의의 경우 함수 이름과 매개변수 목록이 동일해야 하며 파생 클래스 함수는 override 키워드를 사용해야 합니다. C++ 함수의 오버로딩과 재정의는 C++의 두 가지 다른 개념입니다. 오버로딩을 사용하면 이름은 같지만 매개변수 목록이 다른 함수를 생성할 수 있으며, 재정의를 사용하면 파생 클래스의 함수가 기본 클래스의 동일한 이름의 함수를 재정의할 수 있습니다.
Overloads
다양한 입력 매개변수를 기반으로 다양한 모양의 면적을 계산하는 area
라는 함수가 있다고 가정해 보세요.
int area(int length, int width); // 矩形面积 double area(double radius); // 圆形面积
area< /code>를 오버로드합니다. 매개변수 목록이 다르기 때문에 이름을 지정합니다. 다양한 유형의 데이터를 처리하고 다양한 계산을 수행할 수 있습니다. <p><strong></strong>Override</p><p></p>이제 <code>area
가상 함수가 있는 기본 클래스 Shape
가 있다고 가정합니다. class Shape { public: virtual double area() const = 0; };
를 생성할 수 있습니다. Rectangle
및 Circle
을 사용하고 area
함수를 재정의합니다. class Rectangle : public Shape { public: double area() const override { return length * width; } int length, width; // 矩形属性 }; class Circle : public Shape { public: double area() const override { return Math.PI * radius * radius; } double radius; // 圆形属性 };
override</code를 통해 부모를 명시적으로 재정의합니다. > 키워드 클래스의 <code>area
함수입니다. 재정의된 함수는 상위 함수와 동일한 반환 유형 및 이름을 가져야 합니다. area
的函数,它根据不同的输入参数计算不同形状的面积:
#include <iostream> #include <cmath> using namespace std; class Shape { public: virtual double area() const = 0; }; class Rectangle : public Shape { public: double area() const override { return length * width; } int length, width; }; class Circle : public Shape { public: double area() const override { return Math.PI * radius * radius; } double radius; }; int main() { // 创建矩形对象 Rectangle rectangle; rectangle.length = 5; rectangle.width = 3; // 创建圆形对象 Circle circle; circle.radius = 2; // 计算并输出矩形和圆形的面积 cout << "矩形面积:" << rectangle.area() << endl; cout << "圆形面积:" << circle.area() << endl; }
这些函数重载了 area
名称,因为它们有不同的参数列表。它们能够处理不同类型的数据并执行不同的计算。
覆盖
现在,假定我们有一个基类 Shape
,它有一个 area
虚拟函数:
矩形面积:15 圆形面积:12.566370614359172
我们可以创建派生类 Rectangle
和 Circle
,并覆盖 area
函数:
在派生类中,我们通过 override
关键字显式覆盖父类的 area
오버로딩과 오버라이딩을 보여주는 프로그램을 만듭니다:
rrreee출력 결과:
rrreee이 예에서는 오버로딩과 오버라이딩을 통해 다양한 기능을 가진 함수를 만드는 방법을 보여줍니다.
위 내용은 C++ 함수 오버로딩 및 재정의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!