假设有Base
类和Derived
类。派生类的基指针
Base *A = new Base;
这里A是指向Base类的指针,new
构造了A指向的指针。
我也看到
Base *B = new Derived;
如何解释呢? B是一个指向Base
的类,而一个Derived
类构造并指向B? 如果从Base
类,比如说,Virtual void f()
衍生的功能,而且它在Derived
类被覆盖,然后
B->f()
会调用该函数的哪个版本?在Base
类中的版本,或在Derived
类中覆盖的版本。
如果Derived
中有一个新功能void g()
,请问B->g()
会正确调用此功能吗?
一个更多的是,是
int *a = new double;
或
double *a = new int;
合法吗?
谷歌'polymorphism' – texasbruce
虚拟是一个关键字,它不是 '虚拟'。它使多态性的工作。 – jimifiki