함수 상속 개요: C++의 함수 상속은 override 키워드를 통해 구현되어 하위 클래스가 상위 클래스 함수를 재정의할 수 있도록 하여 다형성을 가능하게 합니다. 즉, 객체가 동일한 상위 클래스에 속하더라도 런타임에 다른 동작을 표시합니다.
객체 지향 프로그래밍에서 상속은 하위 클래스가 상위 클래스의 데이터 멤버와 멤버 함수를 상속할 수 있도록 하는 중요한 메커니즘입니다. 함수 상속이란 부모 클래스에서 자식 클래스로 멤버 함수를 상속하는 것을 말합니다.
다형성은 객체가 동일한 상위 클래스에 속하더라도 런타임에 객체가 다르게 동작할 수 있도록 하는 객체 지향 프로그래밍의 핵심 개념입니다. 함수 상속은 다형성을 달성하는 방법입니다.
C++에서 함수 상속은 override
키워드를 통해 구현됩니다. 하위 클래스가 상위 클래스와 동일한 이름과 서명을 가진 함수를 정의하면 해당 함수는 override
로 표시됩니다. 이는 하위 클래스가 상위 클래스의 함수를 재정의하고 있음을 컴파일러에 알립니다. override
关键字实现。当子类定义了一个与父类同名且具有相同签名的函数时,该函数被标记为 override
。这会告诉编译器,子类正在覆盖父类的函数。
class Base { public: virtual void print() { std::cout << "Base class" << std::endl; } }; class Derived : public Base { public: virtual void print() override { std::cout << "Derived class" << std::endl; } };
在此示例中,Base
类定义了一个 print()
函数,而 Derived
类通过 override
关键字覆盖了该函数。因此,当调用 Derived
类对象的 print()
函数时,它将打印 "Derived class",而不是 "Base class"。
override
函数必须是虚函数。虚函数通过 virtual
关键字声明,它允许子类覆盖父类的函数。在上面的示例中,print()
函数是虚函数。
下面是一个演示函数继承和多态的代码案例:
#include <iostream> class Shape { public: virtual double getArea() = 0; }; class Rectangle : public Shape { public: double width, height; Rectangle(double w, double h) : width(w), height(h) {} double getArea() override { return width * height; } }; class Circle : public Shape { public: double radius; Circle(double r) : radius(r) {} double getArea() override { return 3.14 * radius * radius; } }; int main() { Shape* shapes[] = {new Rectangle(2, 3), new Circle(4)}; for (int i = 0; i < 2; i++) { std::cout << "Area of " << (i == 0 ? "Rectangle" : "Circle") << ": " << shapes[i]->getArea() << std::endl; } return 0; }
在该案例中,Shape
是形状类的基类,它定义了一个纯虚函数 getArea()
。Rectangle
和 Circle
类从 Shape
类继承,并覆盖了 getArea()
函数以计算各自的面积。
在 main()
函数中,使用多态,一个基类数组被用于存储 Rectangle
和 Circle
对象。由于 getArea()
rrreee
Base
클래스는 print()
함수를 정의하고 Derived
클래스는 override
를 전달합니다. > 키워드는 이 기능을 재정의합니다. 따라서 파생
클래스 객체의 print()
함수가 호출되면 "기본 클래스" 대신 "파생 클래스"가 인쇄됩니다. 가상 함수🎜🎜override
함수는 가상 함수여야 합니다. 가상 함수는 virtual
키워드로 선언되며, 이를 통해 하위 클래스가 상위 클래스 함수를 재정의할 수 있습니다. 위의 예에서 print()
함수는 가상입니다. 🎜🎜실용 사례🎜🎜다음은 함수 상속과 다형성을 보여주는 코드 예제입니다. 🎜rrreee🎜이 경우 Shape
는 순수 가상 함수를 정의하는 Shape 클래스의 기본 클래스입니다. 코드>getArea(). Rectangle
및 Circle
클래스는 Shape
클래스에서 상속되며 getArea()
함수를 재정의하여 해당 면적을 계산합니다. . 🎜🎜main()
함수에서는 다형성을 사용하여 기본 클래스 배열을 사용하여 Rectangle
및 Circle
객체를 저장합니다. getArea()
함수가 재정의되었으므로 개체 유형에 따라 올바른 영역이 인쇄됩니다. 🎜🎜함수 상속과 다형성을 통해 다양한 동작을 갖춘 유연하고 확장 가능한 프로그램을 구축할 수 있습니다. 🎜위 내용은 C++ 함수 상속에 대한 자세한 설명: 다형성의 본질은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!