在下面的类中,有一个 OpModel
类型的指针 model_
,它是一个类。该指针在构造函数中使用 new
进行初始化,以创建一个 OpModel
对象。没关系,您有一个指向有效对象的指针。 model() 方法引用此指针来访问实际的 OpModel 对象。但我不明白的是它返回对 CompositionalModel 的引用,这是一个不同的类。
我认为它与多态性有关,因为OpModel
派生自CompositionalModel
,它是一个抽象类。但为什么要返回对基类的引用呢?
最佳答案
这是 OO 代码中非常典型的事情。
通过返回更窄的基类 - 想想接口(interface) - 调用代码只需要知道这一点。
您可以通过这种方式隐藏各种额外的血腥实现细节。
否则,任何调用代码都需要了解有关 CompositionalModel
的所有信息。
此外,这可以将 OpModel
更改为任何其他类型的 CompilationUnit
,并且调用代码不需要更改。
关于C++ 为什么返回对抽象基类的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51749925/