社区
工具平台和程序库
帖子详情
在C++下如何取父类?
playboxer
2003-07-17 08:04:30
我现在有一个类CDistributeBox(),继承了CDevice().
在CDistributeBox中我如何取得父类的指针?
...全文
441
9
打赏
收藏
在C++下如何取父类?
我现在有一个类CDistributeBox(),继承了CDevice(). 在CDistributeBox中我如何取得父类的指针?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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++
- 子类与
父类
的同名成员变量_
c++
子类和
父类
有相同的成员变量(1)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
C++
从子类访问
父类
的私有函数(看的我发愣)
尽管从各种
c++
书籍中我们得到的信息是子类从
父类
继承的仅有protected成员和public成员,而
父类
的private成员无法被子类继承,也无法被子类访问,但是当
父类
的private函数是一个虚函数时,我们却可以通过读
取
VTABLE表中信息,从而找到
父类
虚函数的地址,进而调用它。注意了,关键就在这里:A的虚函数都是私有的,不是么?规律二:当子类和
父类
同时拥有虚函数时,子类的VTABLE中也同时会拥有
父类
和子类的虚函数偏移地址,而且子类的虚函数偏移地址一定是追加在
父类
虚函数偏移地址之后的。
C++
多态,
父类
有virtual, 子类继承时, 会拷贝
父类
的虚函数表吗
子类的虚函数表会继承
父类
的虚函数表,并添加自己新增的虚函数。在
C++
中,在
父类
中声明的虚函数会在子类中被继承,并且子类中所生成的对象如果重写了
父类
中的虚函数,其虚函数表将被更新以指向重写后的函数地址。因此,子类不需要再次拷贝一份
父类
的虚函数表,可以直接继承
父类
的虚函数表。如果子类覆盖了
父类
的虚函数,则子类的虚函数表会被更新,以指向重写后的函数地址,而不是
父类
的函数地址。因此,子类不需要拷贝一份
父类
的虚函数表,虚函数表的继承和更新是由编译器完成的。
C++
子类和
父类
指针的转换-dynimic_cast
C++
子类和
父类
指针的转换,推荐使用dynamic_cast,需要注意的是,其实在
C++
里面还有其他的转换方式,这里先不做探究。我们在这里只做两个比较,分另是括号强制转换和dynimic_cast两个。 先抛出结论,只有在
父类
或子类有虚函数的时候,用```dyniamci_cast``` ...
C++
继承,子类与
父类
的一些特性
子类重定义
父类
的成员函数和重载
父类
的成员函数在函数名称、参数列表以及返回类型等方面存在区别。函数名称重载:在同一个类中,函数名相同。重定义:在子类中,与
父类
中函数名相同。参数列表重载:参数列表不同,即参数的个数或类型有所改变。重定义:参数列表可以不同,但如果完全相同且
父类
函数未声明为virtual,则基类的函数被隐藏。返回类型重载:返回类型可以相同也可以不同,但重载不依据返回类型来判断。重定义:若与
父类
原型完全一致(包括返回类型),则为重写;否则,只是简单地隐藏了
父类
方法。
工具平台和程序库
24,860
社区成员
27,333
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章