C++ 함수 재정의를 사용하면 하위 클래스가 상위 클래스 함수를 재정의하고 고유한 특정 구현을 제공할 수 있습니다. 하위 클래스는 상위 클래스와 이름 및 매개변수 유형이 동일한 함수를 선언하고 이를 override 키워드로 표시해야 합니다. 재정의 함수는 부모 클래스의 기능을 확장하거나, 하위 클래스에 대한 특정 구현을 제공하거나, 추상 함수의 구체적인 구현을 제공하는 데 사용될 수 있습니다.
C++ 함수 재작성에 대한 자세한 설명: 상위 클래스 함수 재정의의 비밀
Overview
함수 재작성은 C++ 객체 지향 프로그래밍의 강력한 기능으로, 하위 클래스가 상위 클래스의 함수를 재정의할 수 있게 해줍니다. 함수. 재정의를 통해 하위 클래스는 상위 클래스의 구현을 재정의하고 고유한 특정 기능을 제공할 수 있습니다.
Syntax
함수를 재정의하려면 하위 클래스는 상위 클래스와 동일한 이름과 매개변수 유형을 가진 함수를 선언해야 합니다.
class Child : public Parent { public: ReturnType overrideName(ParameterList) override; };
여기서:
override
키워드는 function 상위 클래스의 함수를 다시 작성했습니다. override
关键字表明该函数重写了父类中的函数。overrideName
是重写函数的名称。ParameterList
是重写函数的参数列表。ReturnType
是重写函数的返回类型(可以与父类函数不同)。实战案例
考虑一个形状基类 Shape
,它包含一个计算面积的函数 getArea()
。子类 Rectangle
和 Circle
分别继承 Shape
,需要提供自己的面积计算方法:
class Shape { public: virtual double getArea() = 0; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : m_width(width), m_height(height) {} double getArea() override { return m_width * m_height; } private: double m_width; double m_height; }; class Circle : public Shape { public: Circle(double radius) : m_radius(radius) {} double getArea() override { return M_PI * m_radius * m_radius; } private: double m_radius; }; int main() { Shape* shapes[] = {new Rectangle(5, 10), new Circle(3)}; for (Shape* shape : shapes) { cout << "Area: " << shape->getArea() << endl; } return 0; }
输出
Area: 50 Area: 28.2743
在这个例子中,Rectangle
和 Circle
重写了 Shape
中的 getArea()
函数,提供了各自的面积计算。父类指针指向子类对象时,重写后的函数将被调用。
使用场景
函数重写通常用于以下场景:
注意事项
override
overrideName
은 재정의된 함수의 이름입니다. ParameterList
는 재정의된 함수의 매개변수 목록입니다. 🎜🎜ReturnType
은 재정의된 함수의 반환 유형입니다(상위 클래스 함수와 다를 수 있음). 🎜🎜🎜🎜실용 사례🎜🎜🎜면적을 계산하는 getArea()
함수가 포함된 모양 기본 클래스 Shape
를 생각해 보세요. 하위 클래스 Rectangle
및 Circle
은 각각 Shape
를 상속하며 고유한 면적 계산 방법을 제공해야 합니다. 🎜rrreee🎜🎜Output🎜🎜rrreee🎜이 예에서는 , Rectangle
및 Circle
은 Shape
의 getArea()
함수를 다시 작성하여 해당 면적 계산을 제공합니다. 상위 클래스 포인터가 하위 클래스 객체를 가리키면 재정의된 함수가 호출됩니다. 🎜🎜🎜사용 시나리오🎜🎜🎜함수 재작성은 일반적으로 다음 시나리오에서 사용됩니다. 🎜🎜🎜상위 클래스 함수를 확장하거나 수정해야 하는 경우. 🎜🎜다양한 하위 클래스에 특정 기능을 제공해야 하는 경우. 🎜🎜기본 클래스에서 추상 함수(순수 가상 함수)의 구체적인 구현을 제공해야 하는 경우. 🎜🎜🎜🎜Notes🎜🎜🎜🎜재정의된 함수는 상위 클래스 함수와 동일한 서명(이름, 매개변수 유형, 반환 유형)을 가져야 합니다. 🎜🎜가상 함수의 경우 하위 클래스 재정의 함수는 다양한 액세스 한정자를 가질 수 있습니다. 예를 들어 보호된 상위 클래스 함수는 공개 하위 클래스 함수로 재정의될 수 있습니다. 🎜🎜하위 클래스는 상위 클래스의 비정적 함수만 재정의할 수 있습니다. 🎜🎜재정의된 함수는 일반적으로 override
키워드로 표시되지만 필수는 아닙니다. 🎜🎜위 내용은 C++ 함수 재작성에 대한 자세한 설명: 상위 클래스 함수 재정의의 비밀의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!