利用多态和继承设计可复用的C++代码
一、多态的概念及应用
多态是C++的一个重要特性,指同一函数或方法,可以在不同的对象上产生不同的行为。多态分为静态多态和动态多态。静态多态是指函数重载,动态多态是指虚函数和运行时多态。
动态多态性是多态的高级形态,是通过虚函数实现的。它的实现方式是将一个函数声明为虚函数,在基类中定义,子类中根据需要重新定义。在程序运行时根据对象的实际类型来调用相应的函数,实现多态。动态多态性的优点是实现了代码的可复用性。因为基类中声明的虚函数在子类中仍然有效,可以在子类中重新定义,从而满足不同对象的需求。
下面是一个简单的动态多态的例子,定义一基类Shape,其中定义了一个虚函数CalculateArea()。圆类Circle和矩形类Rectangle都继承Shape类,它们都需要重新定义CalculateArea()函数的实现:
class Shape { public: virtual double CalculateArea() = 0; }; class Circle: public Shape { public: Circle(double radius) : m_radius(radius) {} virtual double CalculateArea() { return 3.14159*m_radius*m_radius; } private: double m_radius; }; class Rectangle: public Shape { public: Rectangle(double width, double height) : m_width(width), m_height(height) {} virtual double CalculateArea() { return m_width*m_height; } private: double m_width; double m_height; };
在上述代码中,Shape是基类,定义了一个纯虚函数CalculateArea(),这意味着在Shape类中这个函数没有实现,而且我们必须在派生类中实现它。Circle和Rectangle都代表了形状,派生自Shape类,它们都实现了基类的CalculateArea()函数,但是每个类都有自己的实现方法。我们可以通过在函数签名前面加上virtual关键字,告诉编译器这个函数是虚函数,需要在运行时重写实现。
二、继承的概念及应用
继承是C++提供的另一种重要特性,允许一个类派生出另一个类,并使用已有类的所有属性和方法,实现代码的复用。在C++中,一个类可以派生出多个子类,子类可以是直接或间接派生出来的。继承分为单一继承、多重继承和虚继承。
下面是一个简单的继承的例子,定义一个Animal类作为基类,Dog类和Cat类都派生自Animal类:
class Animal { public: void Eat() { cout
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。