>  기사  >  백엔드 개발  >  함수 오버로딩 및 재작성을 위한 C++ 언어 표준 사양

함수 오버로딩 및 재작성을 위한 C++ 언어 표준 사양

WBOY
WBOY원래의
2024-04-21 09:09:01819검색

함수 오버로딩을 사용하면 동일한 범위에서 동일한 이름을 가진 함수를 정의할 수 있지만 다른 매개변수 목록이 필요한 반면, 함수 재정의를 사용하면 파생 클래스의 기본 클래스와 동일한 이름 및 매개변수 목록을 가진 함수를 정의할 수 있습니다. override 키워드, 반환 유형 및 매개변수 목록이 필요하며 기본 클래스 함수와 정확히 동일합니다. 오버로드 예: print(int), print(double); 덮어쓰기 예: Derived 클래스의 foo()는 Base 클래스의 foo()를 재정의합니다.

C++ 语言标准对函数重载和重写的规范

함수 오버로딩 및 재작성을 위한 C++ 언어 표준 사양

함수 오버로딩

오버로딩을 사용하면 동일한 범위에서 동일한 이름으로 여러 함수를 정의할 수 있지만 해당 매개변수 목록은 달라야 합니다. C++ 언어 표준에서는 다음 사양을 따르기 위해 함수 오버로드가 필요합니다.

  • 반환 유형은 동일해야 합니다.
  • 매개변수 목록은 서로 달라야 합니다(예: 매개변수의 수, 유형 또는 순서).
  • const, 휘발성 및 참조 한정자를 사용하여 오버로드된 함수를 구별할 수 있습니다.

예:

void print(int x);
void print(double x);

Function overriding

Overriding을 사용하면 기본 클래스와 동일한 이름 및 매개변수 목록을 사용하여 파생 클래스에서 함수를 정의할 수 있습니다. C++ 언어 표준에서는 다음 사양을 따르도록 함수 재작성을 요구합니다.

  • 재작성된 함수에는 override 키워드가 있어야 합니다.
  • 반환 유형은 기본 클래스 함수와 동일해야 합니다.
  • 매개변수 목록은 기본 클래스 함수(유형, 순서 및 한정자 포함)와 정확히 동일해야 합니다.
  • 파생 클래스 함수는 기본 클래스 함수보다 낮은 액세스 권한을 가져서는 안 됩니다. 즉, protected는 protected 또는 public 함수만 재정의할 수 있습니다.

예:

class Base {
public:
    virtual void foo();
};

class Derived : public Base {
public:
    override void foo() override;  // 重写基类中的 foo
};

실제 사례

함수 오버로딩:

#include <iostream>

using namespace std;

void print(int x) {
    cout << "int: " << x << endl;
}

void print(double x) {
    cout << "double: " << x << endl;
}

int main() {
    print(10);  // 调用 int 版本的 print
    print(3.14); // 调用 double 版本的 print
    return 0;
}

함수 재작성:

#include <iostream>

using namespace std;

class Shape {
public:
    virtual void draw() = 0;  // 纯虚函数
};

class Rectangle : public Shape {
public:
    void draw() override {
        cout << "Drawing a rectangle" << endl;
    }
};

int main() {
    Rectangle r;
    r.draw(); // 调用 Rectangle 类中的重写函数
    return 0;
}

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

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