【问题标题】:c++ why return a reference to a base abstract classc ++为什么返回对基本抽象类的引用
【发布时间】:2018-08-08 15:02:20
【问题描述】:

在下面的类中有一个类型为OpModel 的指针model_,它是一个类。此指针在构造函数中使用new 进行初始化,以创建OpModel 对象。没关系,你有一个指向有效对象的指针。方法model() 引用这个访问实际OpModel 对象的指针。但我不明白的是它返回了对CompositionalModel 的引用,这是一个不同的类。

我认为它与多态性有关,因为OpModel 是从CompositionalModel 派生的,它是一个抽象类。但是为什么要返回对基类的引用呢?

【问题讨论】:

  • 希望,无论您使用什么书籍/网站,都能让您了解智能指针(或无指针)是当今的流行趋势。除此之外,是的,这是一个面向对象的事情。下面的答案是准确的。

标签: c++ pointers reference abstract-class


【解决方案1】:

这是在 OO 代码中非常典型的事情。

通过返回更窄的基类——想想接口——调用代码只需要知道这一点。 您可以通过这种方式隐藏各种额外的血腥实现细节。 否则,任何调用代码都需要知道CompositionalModel的所有信息。

此外,这可以将OpModel 更改为任何其他类型的CompilationUnit,并且调用代码不需要更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2013-10-12
    • 2016-09-21
    • 1970-01-01
    • 2015-04-06
    相关资源
    最近更新 更多