虽然我已经在 c++ 中工作了一段时间,但直到现在我才需要使用多态特性,而且我对它们非常感兴趣。
如果我有一个基类ClassA
并且另一个ClassB
派生自它,我知道我可以拥有virtual
成员函数ClassA
,当在 中实现时,即使该实例使用指针指向ClassB
,也会在实例中调用。如果没有这个关键字,我认为在使用基类指针时基类实现会占上风,但要对从子类实例化的对象进行操作,这对我来说似乎是有问题的,如果实际上它自己实现了相同的函数在这种情况下有效地忽略了。ClassB
ClassA
virtual
ClassB
这是对多态行为的正确理解吗?
现在真正的问题是如何ClassB
使用指向基类的指针来指代。我真的只能想到两种方法:
- 在实例化时创建指针,使用返回基类指针的函数,同时实际为子类分配内存,使用子类的构造函数。(这样的创建函数有通用名称吗?)
- 使用对象转换
static_cast
并将其分配给指向基类的指针。
这是生成指向子类对象的基类指针的两种主要技术吗?