>백엔드 개발 >C++ >C++ 함수 재작성: 유연한 상속의 새로운 장을 열다

C++ 함수 재작성: 유연한 상속의 새로운 장을 열다

WBOY
WBOY원래의
2024-05-03 14:03:01415검색

C++ 함수 재작성을 통해 하위 클래스가 상위 클래스 함수를 재정의하여 다형성을 달성하고 상속의 유연성을 확보할 수 있습니다. 함수를 다시 작성할 때 하위 클래스 함수 시그니처는 override 키워드로 식별되는 상위 클래스 함수와 정확히 동일해야 합니다. 유연성, 다형성, 코드 재사용 등의 장점이 있습니다. 그러나 서명 일치 규칙과 최종 수정자는 재정의될 수 없습니다.

C++ 函数重写:开启灵活继承的全新篇章

C++ 함수 재작성: 유연한 상속의 새로운 장을 열었습니다

머리말

함수 재작성은 하위 클래스가 상위 클래스의 함수를 재정의하여 여러 기능을 달성할 수 있게 해주는 강력한 C++ 기능입니다. 이는 유연한 상속에 대한 새로운 가능성을 열어주며, 하위 클래스가 상위 클래스의 기본 기능을 유지하면서 동작을 사용자 정의할 수 있게 해줍니다.

Syntax

함수를 재정의하려면 하위 클래스가 상위 클래스 함수와 동일한 시그니처를 사용하여 새 함수를 선언해야 합니다. 새 함수의 반환 유형, 매개변수 및 이름은 상위 클래스 함수와 정확히 동일해야 합니다. 다음은 함수를 재정의하기 위한 구문입니다.

returntype ClassName::functionName(parameters) {
  // 子类的函数体
}

여기서 returntype은 함수의 반환 유형이고 ClassName은 하위 클래스의 이름이며 functionName은 함수 이름을 재정의하기 위한 parameters가 함수의 매개변수 목록입니다. returntype 是函数的返回类型,ClassName 是子类的名称,functionName 是要重写函数的名称,parameters 是函数的参数列表。

实战案例

考虑这样一个父类:

class Shape {
public:
  virtual double area() { return 0.0; }
};

我们想创建一个子类 Rectangle,它具有与父类相同的 area() 函数,但提供自己的实现:

class Rectangle : public Shape {
public:
  double length;
  double width;

  Rectangle(double l, double w) : length(l), width(w) {}

  double area() override {
    return length * width;
  }
};

在子类 Rectangle 中,我们重写了 area() 函数并添加了 lengthwidth 成员变量来存储矩形的尺寸。通过使用 override 关键字,我们可以显式指示该函数是重写父类函数。

优点

函数重写提供了以下优点:

  • 灵活性:允许子类自定义其行为,同时保留父类的基本功能。
  • 多态性:支持通过基类指针引用不同类型的对象,并调用正确的重写函数。
  • 代码重用:父类中的通用功能可以被子类共享,避免重复性代码。

注意事项

  • 函数重写遵循“签名匹配”规则,即子类函数的返回类型、参数和名称必须与父类函数相同。
  • 如果子类函数未覆盖父类函数,则编译器将发出警告。
  • 如果父类函数被声明为 final
실용 사례🎜🎜🎜부모 클래스를 고려해보세요: 🎜rrreee🎜우리는 부모 클래스와 동일한 area() 함수를 갖는 하위 클래스 Rectangle을 만들고 싶습니다. 하지만 자신만의 구현을 제공하세요. 🎜rrreee🎜하위 클래스 Rectangle에서 area() 함수를 재정의하고 length를 추가합니다. width 직사각형의 크기를 저장하는 멤버 변수입니다. override 키워드를 사용하면 함수가 상위 클래스 함수를 재정의한다는 것을 명시적으로 나타낼 수 있습니다. 🎜🎜🎜 장점 🎜🎜🎜 함수 재정의는 다음과 같은 장점을 제공합니다: 🎜
  • 🎜유연성: 🎜 상위 클래스의 기본 기능을 유지하면서 하위 클래스가 동작을 사용자 정의할 수 있습니다. 🎜
  • 🎜다형성: 🎜기본 클래스 포인터를 통해 다양한 유형의 객체를 참조하고 올바른 재정의된 함수 호출을 지원합니다. 🎜
  • 🎜코드 재사용: 🎜상위 클래스의 공통 함수는 중복 코드를 피하기 위해 하위 클래스에서 공유될 수 있습니다. 🎜🎜🎜🎜Notes🎜🎜
    • 함수 재작성은 "서명 일치" 규칙을 따릅니다. 즉, 하위 클래스 함수의 반환 유형, 매개변수 및 이름은 상위 클래스 함수와 동일해야 합니다. 🎜
    • 하위 클래스 함수가 ​​상위 클래스 함수를 재정의하지 않으면 컴파일러는 경고를 발행합니다. 🎜
    • 상위 클래스 함수가 ​​final으로 선언되면 하위 클래스에서 재정의될 수 없습니다. 🎜🎜

위 내용은 C++ 함수 재작성: 유연한 상속의 새로운 장을 열다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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