中易网

C++指向类的指针

答案:6  悬赏:0  
解决时间 2021-02-02 04:19
比如有A类 还有A的公有派生类B类
怎么理解A*p=new B?????
是指向A类还是B类??
为什么p->可以访问A类和B类的对象?
最佳答案
很明显这声明的一个A类的指针,不过这个指针指向了B类,就是这么理解,指针本身是A类指针。

访问B类的对象没有问题,访问A类的也没有问题,因为B类由A类派生。

要访问函数的话,那么对于只有B类中存在的函数,直接访问没有问题。

那么对于B类和A类中都存在的函数会这么处理呢,那就要用到虚函数了。

如果函数在基类中时虚函数,那么用p调用函数会指向B类中的对应函数,要是没有在基类中将其定义为虚函数的话,那么无论p指针指向什么位置,函数调用都会调用基类也就是p本身所被声明的类中的函数
全部回答
是指向B类 父类指针指向子类应用 p->可以访问A类和B类的对象,这就是C++中的多态
name[i]没有分配空间,如果是单个字符,要用new char分配空间,如果是字符串为其分配一定的空间用name[i]=new char [10],否则运行时会有内存访问错误,当然如果不想指定字符串大小,可以用c++库中string类
正巧干活累了 A理解为鸟 B理解为老鹰 你当然可以说老鹰是一只鸟 A*p=new B 这个时候p的指向就不能简单的认为A,B了 你可以先理解为指向了A类,如果B中使用了virtual方法重写了func的话,p->func仍然会调用B的方法 这是通过晚绑定实现的,也是面向对象的一个特性 你应该初学cpp吧 可以等看完virtual再理解这个问题
从内存结构来说,B从A派生,就是在A的内存结构的后面,再添加了一些B自己的内容 指针本质是内存地址 指向实例B的指针,前一段是A的内容,后面是B的内容 这也就是为什么C++允许基类指针指向派生类(其实先有这个规定,才有上面的效果)。
A*p=new B; //p是指向B类对象的指针 C++规定,基类的指针可以指向派生类 (这是实现多态的基础)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
欠债不还写承诺书法律支持吗?
兄弟情酒家地址在什么地方,想过去办事
请问 贸易术语中的 FREE 什么意思 ??
夫妻五行属性查询
我想问一个邯郸电子科技公司的地址
服装公司家属院(北门)地址在什么地方,想过去
如何将一个账套的会计科目复制到另一个账套
免费版有道云笔记和印象笔记哪个好
夏天为什么手指总是痒
梦三国鼠标左右键分别是什么用,我鼠标左键失
以前合伙注册公司的股份未完成转让可以再注册
天雨日化怎么去啊,有知道地址的么
我在陆家嘴上班,前阵子发现有个免费wifi叫CM
网上说飞利浦流光溢彩电视,什么是流光溢彩,
一失足成千古恨 再回头已百年身怎么读
推荐资讯
到GUCCI工作有什么条件?
红树湾家具博览中心陈家祠店地址有知道的么?
QQ的头像能用GIF格式来做吗
爱尚·美丽高级美发会所怎么去啊,有知道地址
祥林嫂出自哪一篇文章
五粮液纳福彰显尊贵多少钱
红白机 快打旋风第二个红人,怎么发出向上空
女方有抑育症和有残疾证离婚时可以不付抚养费
圣经对一年四季春夏秋冬怎么来历
格力电器步步高特约服务站地址在哪,我要去那
Jose went to his union to make a form
百岁鱼龙湖店怎么去啊,有知道地址的么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?