博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
public继承中的虚函数与private/protected的区别
阅读量:6634 次
发布时间:2019-06-25

本文共 758 字,大约阅读时间需要 2 分钟。

class Person{public:    virtual void test(){ cout << __FUNCTION__ << endl;}};class Student : public Person{public:    virtual void test() { cout << __FUNCTION__ << endl;}};void test_virtual(Person * p){...}test_virtual(Student()) ; //没问题吧

但只在public 继承这才没问题 : Person * p = new Student

现在把 public 继承修改:

class Person{public:    virtual void test(){ cout << __FUNCTION__ << endl;}};class Student : protected Person{        //protected 继承public:    virtual void test() { cout << __FUNCTION__ << endl;}        //内部依然可以使用virtual函数    void test_virtual(){        Person * p = this;        p->test();    }};

现在呢 : Person p = new Student //conversion from 'Student ' to 'Person *' exists, but is inaccessible

原因: 此时父类接口都是protected, 外部已经无法访问;
但virtual函数依然存在, 在内部依然可以使用;

转载地址:http://yzdvo.baihongyu.com/

你可能感兴趣的文章
angular2/ionic2 实现搜索结果中的搜索关键字高亮
查看>>
Git多分支平行发展(一个仓库包含多个不同的项目)
查看>>
前端架构之路(7) - 私有 npm 仓库
查看>>
用js将从后台得到的时间戳(毫秒数)转换为想要的日期格式
查看>>
apache2部署vue项目
查看>>
tmux的超绝便利
查看>>
ajax请求里面调用window.open会被浏览器拦截(优化版)
查看>>
【云计算的1024种玩法】配置 Web应用防火墙 防患攻击与未然
查看>>
十流程序员 编程 的小小想法
查看>>
设计模式(2)代理模式
查看>>
七牛云对象存储 JavaScript SDK 更新,即刻体验更简单·可信赖的服务
查看>>
我们来聊聊Cookie、Session和Storage的那些事
查看>>
Codepen 每日精选(2018-4-8)
查看>>
video在微信和QQ浏览器中不全屏播放解决
查看>>
如何快速成长为技术大牛?阿里资深技术专家的总结亮了
查看>>
不同系统里同一Customizing activity的显示差异分析
查看>>
php短信接口接入详细过程
查看>>
Windows系统Node开发环境重置
查看>>
总结开发过程踩到的坑(一)
查看>>
数据库-oracle-数据库迁移
查看>>