Code前端首页关于Code前端联系我们

理解C++中public继承的实现方式与用途

terry 2年前 (2023-10-01) 阅读数 146 #c++
文章标签 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前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门