理解C++中public继承的实现方式与用途
文章标签
MySQL Workbench
一、public继承的定义
public继承是C++中最常见的继承方式之一。它的定义方式如下:
class DerivedClass : public BaseClass { ... };
这样定义后,DerivedClass就会从BaseClass中继承所有public成员,而BaseClass中的protected和private成员则不能被DerivedClass访问。
二、public继承的实现方式
public继承的实现方式是通过在DerivedClass类中包含一个BaseClass对象来实现的:
class BaseClass { public: ... }; class DerivedClass : public BaseClass { public: ... private: BaseClass m_base; };
这里m_base是DerivedClass类中的成员变量,它是由BaseClass类实例化而来的,因此DerivedClass类就可以访问BaseClass中的所有public成员。
三、public继承的用途
1. 代码复用
public继承最常见的用途就是为了代码复用。如果DerivedClass需要重用BaseClass中的代码(公共接口),那么可以通过public继承来实现。
例如:
class Shape { public: virtual int GetArea() = 0; virtual int GetPerimeter() = 0; }; class Rectangle : public Shape { public: Rectangle(int width, int height) : m_width(width), m_height(height) {} int GetArea() override { return m_width * m_height; } int GetPerimeter() override { return 2 * (m_width + m_height); } private: int m_width, m_height; }; class Square : public Rectangle { public: Square(int sideLength) : Rectangle(sideLength, sideLength) {} };
这里Rectangle类是一个具体的实现类,Square类则是一个将Rectangle类进行扩展的类。由于Square类也是一个矩形,所以可以通过public继承Rectangle类来获取Rectangle类中的代码,直接使用Rectangle中的函数GetArea()和GetPerimeter(),而不需要再次实现这些代码。
2. 多态性
public继承还可以用于实现多态性。
例如:
class Animal { public: virtual void Speak() {} }; class Cat : public Animal { public: void Speak() override { std::cout
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
上一篇:如何使用C++中的自增运算符 下一篇:C++继承:构建类层级结构的关键技术
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。