함수 재작성을 통해 하위 클래스가 상위 클래스 함수를 재정의할 수 있으므로 상위 클래스 결함을 해결하고 코드 구조를 최적화할 수 있습니다. 구체적인 단계는 다음과 같습니다. 하위 클래스는 상위 클래스와 동일한 이름과 서명을 사용하여 함수를 다시 작성하고 자체 구현을 제공합니다. 하위 클래스는 상위 클래스의 디자인 결함이나 오류를 수정할 수 있습니다. 함수를 다시 작성하면 코드의 유지 관리성과 가독성이 향상될 수 있습니다.
C++ 함수 재작성: 상위 클래스 결함을 커버하고 코드 구조를 최적화합니다.
Function Rewriting 하위 클래스가 상위 클래스의 동일한 이름과 서명을 사용하여 함수를 재구현할 수 있습니다. 이는 다음과 같은 이점을 제공합니다.
Syntax
하위 클래스에서 상위 클래스 함수를 재정의하는 구문은 다음과 같습니다.
returnType ChildClass::functionName(argumentList) { // 重写后的函数体 }
그 중:
returnType
: 재정의된 함수의 반환 유형입니다. returnType
:重写函数的返回类型。ChildClass
:派生类名称。functionName
:要重写的函数名称。argumentList
:重写函数的参数列表。实战案例:几何形状基类
考虑一个几何形状基类,它定义一个area
虚拟函数来计算形状的面积:
class Shape { public: virtual double area() const = 0; };
我们创建派生类Square
和Circle
,分别为正方形和圆形:
class Square : public Shape { public: Square(double sideLength) : sideLength(sideLength) {} double area() const override { return sideLength * sideLength; } private: double sideLength; }; class Circle : public Shape { public: Circle(double radius) : radius(radius) {} double area() const override { return M_PI * radius * radius; } private: double radius; };
覆盖父类缺陷
Shape
基类的area
函数是抽象的,因为它没有具体实现。子类必须提供自己的实现。但是,对于像Circle
这样的圆形,父类的area
函数是错误的,因为它不考虑圆周率π。
通过重写Circle
类的area
函数,我们可以覆盖父类缺陷并提供正确的面积计算:
class Circle : public Shape { public: Circle(double radius) : radius(radius) {} double area() const override { return M_PI * radius * radius; } private: double radius; };
优化代码结构
考虑另一个具有以下方法的Vector
类:
class Vector { public: void add(int x) { value += x; } void subtract(int x) { value -= x; } };
我们可以通过重写加法运算符,
ChildClass
: 파생 클래스 이름. functionName
: 다시 작성할 함수의 이름입니다. argumentList
: 함수의 매개변수 목록을 다시 작성합니다.
area
가상 함수를 정의하는 기하 도형 기본 클래스를 고려해보세요. 🎜class Vector { public: Vector& operator+=(int x) { value += x; return *this; } Vector& operator-=(int x) { value -= x; return *this; } private: int value; };
Square
및 Circle
, 각각 정사각형 및 원: 🎜Vector v; v += 10; // 相当于 v.add(10) v -= 5; // 相当于 v.subtract(5)
Shape
기본 클래스의 area함수는 구체적인 구현이 없기 때문에 추상적입니다. 서브클래스는 자체 구현을 제공해야 합니다. 그러나 <code>Circle
과 같은 원의 경우 상위 클래스의 area
함수는 pi를 고려하지 않기 때문에 잘못된 것입니다. 🎜🎜Circle
클래스의 area
함수를 재정의하면 상위 클래스 결함을 재정의하고 올바른 면적 계산을 제공할 수 있습니다. 🎜rrreee🎜🎜코드 구조 최적화🎜🎜🎜 다음 메서드를 사용하는 또 다른 A Vector
클래스를 고려해 보세요. 🎜rrreee🎜추가 연산자 ,
를 재정의하여 이 코드를 다시 디자인하여 코드의 가독성과 유지 관리성을 향상시킬 수 있습니다. rrreee🎜오버라이딩 연산자를 사용하면 더 간단하고 명확한 구문으로 벡터를 조작할 수 있습니다. 🎜rrreee🎜🎜결론🎜🎜🎜함수 오버라이딩은 하위 클래스가 상위 클래스 결함을 오버라이드하고 코드 구조를 최적화할 수 있도록 하는 C++의 강력한 메커니즘입니다. 재정의된 기능의 디자인과 구현을 신중하게 고려함으로써 프로그램의 견고성, 가독성 및 유지 관리성을 향상시킬 수 있습니다. 🎜위 내용은 C++ 함수 재작성: 상위 클래스 결함 처리 및 코드 구조 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!