继承和多态

Ric*_*ard 1 c++ polymorphism virtual inheritance friend

所以我现在正在学习c ++类中的继承,并试图将所有术语都放在一边.我理解受保护和私有之间的区别.但是当你创造一个功能时,朋友与公开它不是一回事吗?

他们用来教导继承的例子是形状,所以:

class shape{
   struct circle
   struct rectangle
   struct line
}
Run Code Online (Sandbox Code Playgroud)

这样的事情,说法之间有什么区别

class circle: shape
class circle: public shape
class circle: private shape (don't actually know if this one is possible)
Run Code Online (Sandbox Code Playgroud)

最后,关键字虚拟意味着/做/用于什么?谢谢

Alo*_*ave 7

首先,您应该选择一本好的C++书籍并阅读以下概念:

The Definitive C++书籍和指南清单


为了让您开始简要介绍您的问题:

您的第一个示例是Composition not Inheritance的示例.
继承是一种关系.
组成是一种关系.

在示例中,Circle IS A类型Shape.


class circle: shape 
Run Code Online (Sandbox Code Playgroud)

与:

class circle: private shape 
Run Code Online (Sandbox Code Playgroud)

对于类,默认Private情况下为Default Access说明符.这是私人继承.类circle私有地派生自类shape.

在Private Inheritance中,Base类的所有公共成员和受保护成员都成为Derived类的Private成员.

class circle: public shape 
Run Code Online (Sandbox Code Playgroud)

公共继承,类circle公共派生自类shape.

在公共继承中,Base类的公共成员成为Derived类的Public成员,Base类的受保护成员成为Derived类的受保护成员.

这个C++ - Faq应该是理解基础知识的好读物:
什么是访问说明符?我应该继承私人,受保护还是公共?


但是当你创造一个功能时,朋友与公开它不是一回事吗?
当您从类中创建函数时friend,Access说明符不再适用于该函数.该函数可以访问,protected以及private该类的成员.但这仅限于该函数.


关键字的virtual意思/做/用于什么?
该关键字virtual用于实现动态/运行时多态性.
这是一个广泛的术语,因此,从书中阅读和理解这一概念至关重要.如果您在理解任何具体问题时仍然遇到问题,请回到此处,随时在此处提出具体问题.

  • @EdHeal:我们不要假装,当我们第一次学到这个时,我们从未混淆.我同意这个问题很广泛,但绝对不是无法回答.OP需要指向正确的方向.SO不仅适用于专业程序员. (2认同)