理解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++继承:构建类层级结构的关键技术
code前端网

