1. Public inheritance means "is-a" (is a) relationship, which is the full inheritance of the interface (not necessarily the full inheritance of the interface implementation). For example, b inherits from a, if it is inherited by public, it means that B is one of a, so a can do operation B can also be carried out ( Although the implementation may be different).
2. The is-a meaning of public inheritance (which can be done by the base class) can be slightly different from the is-a meaning in real life. For example, in life, the square is undoubtedly a kind of rectangle, so it can be considered as a is-a relationship; However, if the is-a meaning of the public inheritance is explained, the square may not be able to inherit the public from the rectangle, because for a rectangle, we can independently change the height or width, but for the square, this operation is not possible. So for the use of inheritance, you need to "add new insights" to your intuition.
Effective C + + clause 32 determine your public inheritance mold out is-a relationship