C++ 함수 재작성을 통해 하위 클래스가 상위 클래스 함수를 재정의하여 다형성을 달성하고 상속의 유연성을 확보할 수 있습니다. 함수를 다시 작성할 때 하위 클래스 함수 시그니처는 override 키워드로 식별되는 상위 클래스 함수와 정확히 동일해야 합니다. 유연성, 다형성, 코드 재사용 등의 장점이 있습니다. 그러나 서명 일치 규칙과 최종 수정자는 재정의될 수 없습니다.
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()
函数并添加了 length
和 width
成员变量来存储矩形的尺寸。通过使用 override
关键字,我们可以显式指示该函数是重写父类函数。
优点
函数重写提供了以下优点:
注意事项
final
area()
함수를 갖는 하위 클래스 Rectangle
을 만들고 싶습니다. 하지만 자신만의 구현을 제공하세요. 🎜rrreee🎜하위 클래스 Rectangle
에서 area()
함수를 재정의하고 length
및 를 추가합니다. width
직사각형의 크기를 저장하는 멤버 변수입니다. override
키워드를 사용하면 함수가 상위 클래스 함수를 재정의한다는 것을 명시적으로 나타낼 수 있습니다. 🎜🎜🎜 장점 🎜🎜🎜 함수 재정의는 다음과 같은 장점을 제공합니다: 🎜final
으로 선언되면 하위 클래스에서 재정의될 수 없습니다. 🎜🎜위 내용은 C++ 함수 재작성: 유연한 상속의 새로운 장을 열다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!