社区
工具平台和程序库
帖子详情
在C++下如何取父类?
playboxer
2003-07-17 08:04:30
我现在有一个类CDistributeBox(),继承了CDevice().
在CDistributeBox中我如何取得父类的指针?
...全文
479
9
打赏
收藏
在C++下如何取父类?
我现在有一个类CDistributeBox(),继承了CDevice(). 在CDistributeBox中我如何取得父类的指针?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hookuy
2003-07-19
打赏
举报
回复
楼上的和以下所说,都未经过证实,呵呵,权当讨论用。
估计有些地方有错,请大家指正。
派生类对象指针注意事项
1.基类对象的指针可以指向她的公有派生类对象(子类,习惯这样说。以下相同),不可指向派生类对象的私有成员。
2.派生类对象的指针不可以指向基类的对象
3.基类对象的指针,当她要指向派生类对象时,只能用她来访问派生类从基类继承来的成员,不可直接访问公有派生类中特定的成员。间接访问方法就是楼上面说的通过类型转换为派生类指针
((CDistributeBox *) ptr)->show2();
hookuy
2003-07-19
打赏
举报
回复
我现在有一个类CDistributeBox(),继承了CDevice().
在CDistributeBox中我如何取得父类的指针?
在子类中取得调用基类指针
//.....
public:
void show();
void show1();
}
class CDistributeBox:public CDevice{
//.....
public:
void show();
void show2();
}
int main()
{
CDevice obj1,*ptr; //定义基类指针ptr
CDistributeBox obj2;
ptr=&obj1; //将指针指向obj1对象
ptr->show();
ptr->show1();
ptr=&obj2; //将指针指向obj2对象
ptr->show();//调用obj2从基类继承来的成员函数
((CDistributeBox *)ptr)->show();//调用obj2对象的特定成员
((CDistributeBox *) ptr)->show2();//调用obj2成员函数
retrun 0;
}
han.bingtao
2003-07-19
打赏
举报
回复
sorry,理解错了
han.bingtao
2003-07-19
打赏
举报
回复
像Java那样的类对象?
bugbugbug
2003-07-18
打赏
举报
回复
子类对象本身就是父类对象加上子类扩展数据成员,为什么还要取?
MatrixCpp
2003-07-18
打赏
举报
回复
搞不清楚你什么意思,取得父类的指针?
class CDistributeBox : CDevice{
...
private:
CDevice* p; //不就是这样取得父类指针?
}
CDistributeBox a;
a.p //是这个意思不?
zheng_can
2003-07-17
打赏
举报
回复
用 reinterpret_cast<CDevice*>( this )
liao2001
2003-07-17
打赏
举报
回复
试试:
CDevice::this
wintersun
2003-07-17
打赏
举报
回复
搞不懂你什么意思?
这种提法本身有问题.
C++
子类
父类
的相互转换
我们都知道,实现子类到
父类
的转换比较简单,但如何实现
父类
到子类的转换呢? 现有一个场景如下,假设我有一个类,里边存有海量的数据作为成员变量,例如cv::Mat等等,占用内存大小较大,可能以M或G计,我们想要对其的若干个对象操作,例如排序等等,该操作仅会使用他的部分成员变量,比如时间戳(double)、类型(字符串)、大小(size_t)等等,并且这些成员变量占内存较小,如果直接使用该类进行操作,那么频繁地交换、储存临时变量将占内存比较大,其中一个思路是将其改造为子类,其
父类
仅有需要进行操作的成...
揭秘
C++
多态——
父类
指针如何正确调用函数?
你真的理解
父类
指针是如何调用函数的吗? 在
C++
的世界里,多态(Polymorphism)是面向对象编程的三大支柱之一。我们常常写下这样的代码: Base* ptr = new Derived(); ptr->virtualFunction(); 看似简单的一行调用,背后却隐藏着 this 指针、虚函数表(vtable)、动态绑定等精巧的机制。为什么
父类
指针能调用子类的实现?它又是如何“找到”正确函数的?this 指针在这个过程中扮演了什么角色?
C++
- 子类与
父类
的同名成员变量_
c++
子类和
父类
有相同的成员变量(1)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
C++
从子类访问
父类
的私有函数(看的我发愣)
尽管从各种
c++
书籍中我们得到的信息是子类从
父类
继承的仅有protected成员和public成员,而
父类
的private成员无法被子类继承,也无法被子类访问,但是当
父类
的private函数是一个虚函数时,我们却可以通过读
取
VTABLE表中信息,从而找到
父类
虚函数的地址,进而调用它。注意了,关键就在这里:A的虚函数都是私有的,不是么?规律二:当子类和
父类
同时拥有虚函数时,子类的VTABLE中也同时会拥有
父类
和子类的虚函数偏移地址,而且子类的虚函数偏移地址一定是追加在
父类
虚函数偏移地址之后的。
C++
多态,
父类
有virtual, 子类继承时, 会拷贝
父类
的虚函数表吗
子类的虚函数表会继承
父类
的虚函数表,并添加自己新增的虚函数。在
C++
中,在
父类
中声明的虚函数会在子类中被继承,并且子类中所生成的对象如果重写了
父类
中的虚函数,其虚函数表将被更新以指向重写后的函数地址。因此,子类不需要再次拷贝一份
父类
的虚函数表,可以直接继承
父类
的虚函数表。如果子类覆盖了
父类
的虚函数,则子类的虚函数表会被更新,以指向重写后的函数地址,而不是
父类
的函数地址。因此,子类不需要拷贝一份
父类
的虚函数表,虚函数表的继承和更新是由编译器完成的。
工具平台和程序库
24,855
社区成员
27,329
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章