已采纳回答 / 浔無涯
dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理。 对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针; 对引用进行dynamic_cast,失败抛出一个异常,成功返回正常cast后的对象引用。
2016-03-23
最赞回答 / 萝卜白菜西瓜
如果你定义的是Gun p,那么需要使用&取地址,也就是hunting(&p)。但是如果你定义的是Gun &p = new Gun(),那么gun本来就是代表的地址,所以直接使用即hunting(p),根据题目知道最后需要释放内存,所以肯定是在堆上定义的,所以应该使用Gun &p = new Gun()这种形式。
2016-03-18
最赞回答 / 慕UI8711183
1、虚函数表不是只存储虚函数的地址吗? 怎莫理解您说的 “类对象的头部即虚函数表所在” 这句话。虚函数表存放的是虚函数的地址,虚函数表指针存放的是虚函数表的首地址,在内存中,子类对象Circle头部(即前四个字节)存放的是虚函数表指针,父类指针p指向子类Circle,也就是说把子类Circle的首地址赋值给p,根据p就可以找到子类Circle的虚函数表指针,依次找到虚函数表,再找到虚函数。2、没有虚函数,就没有虚函数表,子类对象Circle头部(即前四个字节)就没有虚函数表指针,就没法调用子类对象Circ...
2016-03-18
最新回答 / Sacrt
是不是要初始化啊,FighterPlane里面好像没有m_strCode的数据成员,在Plane才有。改成“FighterPlane(string code):Plane(code)”试试
2016-03-12