假设有Base
类和Derived
类。
Base *A = new Base;
这里 A 是一个指向 Base 类的指针,并new
构造了 A 指向的类。
我也看到了
Base *B = new Derived;
这要怎么解释?B 是指向Base
Class的指针,Derived
是 B 构造和指向的类?如果有一个从Base
类派生的函数,比如说,,Virtual void f()
并且它在Derived
类中被覆盖,那么
B->f()
将调用哪个版本的函数?类中的版本Base
,或类中覆盖的版本Derived
。
如果有一个新函数void g()
,Derived
会B->g()
正确调用这个函数吗?
还有一个是
int *a = new double;
或者
double *a = new int;
合法的?