【问题标题】:What is a concrete class in C++? [duplicate]什么是 C++ 中的具体类? [复制]
【发布时间】:2017-07-21 23:41:24
【问题描述】:

我正在阅读“C++ 编程语言第 4 版”,并且已经到了 Bjarne 试图解释具体类的地步。他的解释让我很困惑,我在网上找不到任何让我满意的解释。我知道抽象类是具有至少一个虚函数的类,而具体类是相反的,但我不能围绕具体类。 《Programming Principles and Practice using C++》一书是说具体类本质上是派生类,抽象类是基类。这是正确的解释吗?我整天都在试图弄清楚这个概念。此外,“可用于创建对象的类是具体类”。这是否意味着如果我可以执行“myclass classobject1;”之类的操作,并且我无法使用抽象类创建对象,则该类是具体的?

【问题讨论】:

  • 这个 (stackoverflow.com/questions/2149207/…) 有帮助吗?
  • @Ramon 我也已经看过这个问题了。重新阅读后,我从答案中得到的是,具体类将是从抽象类继承并利用其虚函数的类。这是正确的吗?
  • 具体类是非抽象类。它可以被实例化。

标签: c++ class


【解决方案1】:

本质上,具体类是实现接口的类。一个接口,例如一个抽象类,定义了如何与实现该接口的实例进行交互。您通过成员函数与实例交互,因此接口通常声明旨在由实现类(具体类)覆盖(实现)的虚拟成员函数。如果我有一个抽象类Animal,它可能有一个名为speak 的虚拟成员函数。动物都发出不同的声音,因此Animal 接口不知道如何定义该功能。这将取决于具体的类,例如Dog 或Tiger,来定义调用speak 函数时实际发生的情况。

【讨论】:

  • 所以基本上抽象类是具有虚函数的基类,而实际赋予虚函数功能的派生类是具体类?
  • 虽然我以该场景为例,但具体类不一定需要从抽象类派生。它只是一个完整定义其成员函数(接口)行为的类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2011-06-11
相关资源
最近更新 更多