C++에서는 가상 함수와 추상 기본 클래스를 통해 다형성이 달성됩니다. 가상 함수를 사용하면 파생 클래스에서 기본 클래스 함수를 재정의할 수 있으며, 추상 기본 클래스에는 순수 가상 함수가 포함되어 파생 클래스가 구현을 제공하도록 합니다. 이를 통해 기본 클래스 포인터를 사용하여 파생 클래스 객체에 액세스하고 객체의 실제 유형을 기반으로 적절한 메서드를 호출함으로써 다형성 프로그래밍이 가능해집니다.
다형성은 객체 지향 프로그래밍(OOP)의 핵심 개념으로, 객체가 동일한 메시지에 다양한 방식으로 응답할 수 있게 해줍니다. C++에서는 다형성을 달성하기 위해 가상 함수와 추상 기본 클래스를 사용합니다.
정의: 가상 함수는 기본 클래스에서 선언되었지만 파생 클래스에서만 구현되는 멤버 함수입니다. 기본 클래스 포인터를 통해 가상 함수가 호출되면 파생 클래스의 구현이 호출됩니다.
구문:
class Base { public: virtual void print() const; }; class Derived : public Base { public: virtual void print() const override; };
override
키워드는 기본 클래스의 가상 함수를 재정의하고 있음을 나타냅니다. override
关键字表明我们正在覆盖基类的虚拟函数。
定义:抽象基类是至少包含一个纯虚函数的基类。纯虚函数没有定义,仅由派生类实现。
语法:
class Base { public: virtual void f() const = 0; };
考虑一个形状层次结构,其中每个形状类都具有计算其面积的 area()
정의:
추상 기본 클래스는 하나 이상의 순수 가상 함수를 포함하는 기본 클래스입니다. 순수 가상 함수는 정의되지 않으며 파생 클래스에 의해서만 구현됩니다.구문:
class Shape { public: virtual double area() const = 0; };실용 예: 모양 클래스 계층 구조각 모양 클래스에 해당 면적을 계산하는
area()
메서드가 있는 모양 계층 구조를 생각해 보세요.
class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return M_PI * _radius * _radius; } private: double _radius; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : _width(width), _height(height) {} double area() const override { return _width * _height; } private: double _width, _height; };
int main() { Shape* s1 = new Circle(5); Shape* s2 = new Rectangle(3, 4); std::cout << "Circle area: " << s1->area() << std::endl; std::cout << "Rectangle area: " << s2->area() << std::endl; return 0; }
Circle area: 78.5398 Rectangle area: 12🎜출력: 🎜rrreee🎜 장점 🎜🎜🎜 파생 클래스 객체 🎜🎜 코드 개선 재사용성 및 확장성🎜🎜코드 분리 및 유지 관리 지원🎜🎜
위 내용은 C++ 가상 함수 및 추상 기본 클래스: 다형성 프로그래밍의 기본 탐구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!