子类对象,用作定义为c++基类类型的参数
subclass object used as parameters which are defined as base class type C++
我在《设计模式》一书中读到一个例子:
Maze* MazeGame::CreateMaze(MazeFactory& factory)
{
//something to do
}
class BombedMazeFactory :public MazeFactory
{
//something to defined
}
int main()
{
MazeGame game;
BombedMazeFactory factory;
game.CreateMaze(factory);
}
因此,子类对象将被发送给使用基类作为参数的CreateMaze()。当我做这种操作时,我应该注意什么?
我也不清楚为什么有时子类函数仍然是虚拟的(它们是基类中的虚拟函数),这是否有一些优势?
谢谢你的帮助!
您应该这样做,以便能够为许多不同的类重用相同的代码。在这种情况下,您可以在CreateMaze()函数中使用许多不同的工厂。
关键字virtual在继承类中是可选的。如果它存在或不存在,该方法将是虚的,因为您正在重写基类的方法。我个人更喜欢在继承类中使用它,以显示它是虚拟的,而不是一个常规方法。
相关文章:
- std::具有相同基类的类的变体
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 基类中的函数名称解析
- C++初始化基类
- 如何通过派生类函数更改基类中的向量
- 如何定义一个纯抽象基类
- 如何使用基类指针引用派生类成员
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何引用基类的派生类?
- 如果基类包含双指针成员,则派生类的构造函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 为什么此派生对象无法访问基类的后递减方法?
- 公开最直接的基类模板名称
- 当基类是依赖类型时,这是一个缺陷吗
- 如何使基类的运算符对基类的可变参数数可见(请参阅下面的代码)?
- 模板基类中的静态变量
- C++ 继承:将子类传递给需要基类的函数并获取子类行为
- 继承和友元函数,从基类访问受保护的成员