C++ 함수 오버로딩 및 재작성: 오버로딩: 동일한 이름을 가진 함수는 매개변수 유형이나 번호가 다르며 컴파일 중에 적절한 버전이 선택됩니다. 재작성: 기본 클래스와 동일한 이름을 가진 파생 클래스의 함수는 기본 클래스 구현을 재정의하고 파생 클래스에 대한 특정 구현을 제공합니다. 오버로딩 특성: 컴파일 타임에 바인딩되는 다양한 매개변수 유형 또는 숫자. 재정의 특성: 동일한 매개변수 유형 및 번호, 런타임 바인딩, 상속이 필요합니다.
C++ 함수 오버로딩 및 재작성: 개념과 차이점
Overloading
int sum(int a, int b); double sum(double a, double b);
Override
class Base { public: virtual int add(int a, int b); }; class Derived : public Base { public: int add(int a, int b) override; };
Difference
Features | Overload | Rewrite |
---|---|---|
액세스 수준 | 공개 또는 비공개 | 공개 또는 보호 |
상속 | 필요하지 않음 | 필수 |
Parameters | 다른 매개변수 유형 또는 숫자 | 동일한 매개변수 유형 및 숫자 |
Binding | 컴파일 시간 | 런타임 |
Scope | 수업 내에서도 마찬가지 | In 기본 클래스와 파생 클래스 |
실용 사례
오버로드: 다양한 유형의 숫자의 합을 계산합니다.
#include <iostream> using namespace std; int sum(int a, int b) { return a + b; } double sum(double a, double b) { return a + b; } int main() { cout << "整数之和:" << sum(1, 2) << endl; cout << "浮点数之和:" << sum(1.5, 2.5) << endl; return 0; }
다시 작성: 다형성을 사용하여 다양한 모양의 면적을 계산합니다.
#include <iostream> using namespace std; class Shape { public: virtual double area() = 0; // 纯虚函数 }; class Rectangle : public Shape { public: Rectangle(double length, double width) : length(length), width(width) {} double area() override { return length * width; } private: double length; double width; }; class Circle : public Shape { public: Circle(double radius) : radius(radius) {} double area() override { return 3.14 * radius * radius; } private: double radius; }; int main() { Shape* shapes[] = {new Rectangle(5, 10), new Circle(4)}; for (int i = 0; i < 2; i++) { cout << "面积:" << shapes[i]->area() << endl; } return 0; }
위 내용은 C++ 함수 오버로딩과 재작성의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!