> 백엔드 개발 > C++ > 본문

C++ 함수 오버로딩과 재작성의 차이점은 무엇입니까?

WBOY
풀어 주다: 2024-04-13 18:06:01
원래의
790명이 탐색했습니다.

C++ 함수 오버로딩 및 재작성: 오버로딩: 동일한 이름을 가진 함수는 매개변수 유형이나 번호가 다르며 컴파일 중에 적절한 버전이 선택됩니다. 재작성: 기본 클래스와 동일한 이름을 가진 파생 클래스의 함수는 기본 클래스 구현을 재정의하고 파생 클래스에 대한 특정 구현을 제공합니다. 오버로딩 특성: 컴파일 타임에 바인딩되는 다양한 매개변수 유형 또는 숫자. 재정의 특성: 동일한 매개변수 유형 및 번호, 런타임 바인딩, 상속이 필요합니다.

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

FeaturesOverloadRewrite
액세스 수준 공개 또는 비공개 공개 또는 보호
상속 필요하지 않음필수
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!