基类指针指向子类对象,调用的成员函数和成员变量是基类的还是子类的?
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

首页/
已采纳
基类指针指向子类对象,调用的成员函数和成员变量是基类的还是子类的?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
3条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
frank_20080215 2015-07-06 04:44关注调用的是基类的。可强制转换回来,才能调用子类的。这就是多态
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2022-02-24 09:40回答 3 已采纳 用指向子类的基类指针调用子类的函数,只能是虚函数。如果你要调用子类的非虚函数,必须先将基类指针转换为子类的指针,然后再调用。
- 2022-03-15 13:28回答 1 已采纳 因为f1函数不是虚函数,所以p->f1()只会调用基类的f1因为f2函数时虚函数,多态性似的p->f2()会调用子类的f2,因为p实际指向的是子类对象
- 2021-04-19 01:34回答 2 已采纳 子类调用父类的同名函数: 子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数。 子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调
- 2020-06-23 08:40愿风丶裁尘的博客 2.创建一个基类指针指向它,基类没有的成员变量将无法通过该指针解引用后调用,但vptr还是那个vptr,vptr指向的虚函数表里还是Derived::func(); 目前来看这种判断方法还没有出错 #include<iostream> using ...
- 2021-12-16 07:22回答 3 已采纳 看一下汇编就清楚,当把一个函数设为虚函数,这个函数的地址就会在这个类的虚函数表上,当你通过父类的指针或引用指向一个子类的实例,通过这个指针调用这个类的一个虚函数时其实是调用了子类的函数,而不是父类的,
- 2021-07-29 04:20回答 3 已采纳 已经解决了,是用dynamic_cast强转的时候没有判空,所以才出现这种奇怪现象。另一张想要强转的方法是直接用c语言的小括号强转就可以正常调用基类和派生类成员啊。
- 2022-04-04 13:00回答 1 已采纳 Sphere继承Circle,同时也会继承Circle成员x,y,radius,当调用Sphere::setR()时,实际上是将参数赋值给父类Circle中的变量radius而不是Sphere的变量r
- 2025-01-11 16:00黑果果的思考的博客 可以调用start和stop这样的基类方法,无论指针实际指向的是Car还是Truck对象,都能复用基类中定义的这些通用功能,同时每个子类还可以有自己特有的功能(如Car的honk和Truck的loadCargo),这种方式提高了代码的模块...
- 2022-06-13 04:21回答 1 已采纳 冠以类名即可,例如: template <typename T> class A { public: void foo() {} }; template <typename
- 2022-03-22 09:10回答 1 已采纳 CShape* pCShape = new CRectangle(10,20); 或者 CRectangle bobj(10,20); CShape *aptr = &bobj;
- 2021-01-28 01:29回答 1 已采纳 1. C++的模板类型是编译期的行为,编译的时候需要确定模板的参数类型。 2. 你的代码里继承的地方并没有指明queue的模板参数类型: template<class elemType&g
- 2021-06-03 10:30MarkeyL的博客 c++知识细节-基类指针指向子类对象/虚纯虚函数/多态性...Q: 既然父类指针没有办法调用子类的成员函数,那么为什么还让父类指针指向子类对象呢? 虚函数 Q: 有没有一个解决方法,使我们只定义一个对象指针,就能调用各种子类
- 2024-01-18 13:49玟林禹的博客 基类指针对象只存储跟基类中的成员函数、成员对象相关信息,子类指针对象存储了子类和基类中的信息。按道理来说,一个基类指针指向了一个子类对象。运用基类指针只能操纵基类中相关成员。而虚函数表的设计使得基类...
- 2023-12-01 06:50LanSe___的博客 这是因为基类指针的类型决定了它能够“看到”和调用的成员函数范围,它只能调用基类中声明的函数或者子类中重写的基类函数。:当我们创建一个子类对象时,我们可以使用基类的指针来指向这个子类对象。
- 2020-07-29 10:26愿风丶裁尘的博客 之前粗浅得了解了基类指针指向子类对象时,会舍弃子类所独有的那一部分。 直观地来看,这是通过解引用父类指针后,无法通过它来访问子类类成员变量,但可以通过虚函数表来调用子类重写的虚函数。这一部分可以搜很多...
- 没有解决我的问题, 去提问