首页 > 编程知识 正文

在派生类中可以直接访问基类的,基类指针指向派生类调用的函数是

时间:2023-05-05 09:43:31 阅读:163265 作者:351

a是基类,b是派生类

基类指针指向派生类对象,只能调用基类中的原始项,而不能调用派生类中的项

如在pa=b中可以看到的,这里的获取量为b的首地址,pa的长度由数据类型的内存所占大小确定

pb=a时将报告错误。 由于pb的长度已经超出了a的内存范围,多余的部分会使手指混乱,无法插入安全性缺失

当然pb-showA ()也报告错误。 是同样的理由。

因此,请参阅派生类指针不能指向基类对象

构造函数可以定义为虚函数吗?

不,虚函数必须用对应的vtable虚指针调用。 虚指针只能出现在对象已创建完毕的中,但构造函数是在在对象创建时中调用的,因为在这两者之间不能同时满足请求,所以构造函数

如果用基类的指针指向对象,则在语法分析时会出现问题。 派生类的对象在语法分析时为先释放派生类,再释放基类,而用基类的指针指向派生类的对象时,在语法分析时为只析构基类,因此派生类的部分被释放

因此,要用基类指针指向派生类对象,请使用virtual析构函数来确定基类指针是否位于僵尸内存或称内存泄漏中(virtual角色:根据对象的实际类型) ,可以在手动释放内存delete时调用派生类的析构函数,并自动调用基类的析构函数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。