虽然我在C++中工作了一段时间,但直到现在我还没有必要使用多态特性,而且我对它们非常感兴趣。基本类的基本多态指针
如果我有一个基类ClassA
和另一ClassB
提炼出来的,我知道我可以有virtual
成员函数ClassA
,在ClassB
实施后,将在即使实例指出在ClassB
实例调用使用ClassA
指针。没有这个virtual
关键字,我认为在使用基类指针时基类实现将占上风,但是它正在对从子类实例化的对象进行操作,这在我看来是有疑问的,实际上ClassB
有其自己的实现相同的功能在这种情况下,这被有效地忽略了。
这是对多态行为的正确理解吗?
现在真正的问题是如何使用指向基类的指针来引用ClassB
。我真的可以只考虑两种方式:
- 在实例化时创建的指针,使用返回一个基类指针,而实际上是子类分配内存,而不是使用子类的构造函数。 (这样的创建函数是否具有共同名称?)
- 使用
static_cast
投射对象并将其分配给指向基类的指针。
这些是生成基类指针到子类对象的两种主要技术吗?
相关:http://stackoverflow.com/q/5854581/46821 – 2013-04-04 13:25:48