1,C基类指针指向派生类的问题求输出结果如果基类声明的是虚函数就调用基类的,如果不是虚函数并在派生类中实现,就调用派生类的函数这就是虚函数的作用输出结果:0A::A()10A::A()B::B()0A::f()0A::~A()【基类指针指向派生类对象,C基类指针指向派生类的问题】
2,基类指针指向派生类对象怎么运用NO!基类指针告诉编译器它的静态类型是基类这种类型,所以限定了这个指针只能调用基类的自有成员 。这个其实无关于他指向什么类型对象 。但是,你作为这个指针的写作者,你当然知道这个基类指针指向的是派生类对象 。所以,可以将这个基类指针强制转换为派生类指针(就是强制编译器把这个指针静态类型看作派生类型),静态类型表明了一个对象能执行的所有动作(成员函数)+它的自有属性(数据成员),这样派生类的新增成员就可以被这个指针调用了动态绑定的重写基类的virtual方法并不是派生类新增成员,而是重写(override) 。
3 , 基类指针指向派生类对象和派生类指针指向基类对象的区别派生类对象的内存范围大于基类对象的内存范围 。指向派生类的指针如果指向基类,则可能访问不可预知的内存空间,也就是派生类增加的特殊属性或方法地址入口 。指向基类的指针如果指向派生类,其访问空间总是在派生类的内存空间的内部,不会越界 。基类指针可以指向派生类从基类继承的那部分 , 这就是我们所说的多态 , 但是如果一个派生类想想指向一个基类的部分,那么这个部分必须是public,并且这个指向的部分应该是派生类原封不动的继承过来的 , 并且是在派生类中没有修改,为了安全起见(没有语法的前提下)必须把派生类指针强制转化为基类指针 。派生类对象的内存范围大于基类对象的内存范围 。指向派生类的指针如果指向基类,则可能访问不可预知的内存空间 , 也就是派生类增加的特殊属性或方法地址入口 。指向基类的指针如果指向派生类,其访问空间总是在派生类的内存空间的内部,不会越界 。
推荐阅读
- 数据库和软件开发哪个好,从事软件开发和数据库方面的工作哪个将来就业更好点
- iphone13电池显示数字,咋样让苹果手机显示数字电量
- ios应用用什么语言打开软件,苹果软件所用的语言是什么
- 星际争霸2快捷键列表
- 苹果手机删除软件怎么恢复,苹果手机app删了怎么办
- 智能分析 人数统计,智能人数统计系统
- 简翡儿奇幻职场的人物形象有哪些?
- 苹果产品发布顺序,有没有人知道以往的苹果都是几月上市的 想买苹果的新手机问
- 苹果app开发版,怎么进行ios app开发