博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
confusing c++ 重写 与 重定义 记录1
阅读量:5142 次
发布时间:2019-06-13

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

class parent {public:    void f() { cout << "parent f()" << endl; }    void f(int i) { cout << "parent f(int i)" << endl; }};class child :public parent {
};int main() { child a; a.f(); a.f(2); return 0;}

父类中发生了重载。

子类中如果没有定义名字冲突的成员函数,这时候,父类中的两个函数都可以访问。

class child2 :public parent {public:    void f() {        cout << "child f()" << endl;    }};int main() {        child2 a;        parent *p = &a;    child2 *c = &a;    a.f();                //child f()    a.parent::f();        //parent f()    a.parent::f(2);        //parent f(2)    p->f();                // parent f()    p->f(2);            //    parent f(2)    c->f();                //  child f()    //    c->f(2);        illegal    return 0;}

 

有冲突的时候,a只能直接访问自己定义的这个。

父类中的f必须通过a.parent::f这样的方式访问。这三个是并存的。

 

加了virtual以后呢?

 

转载于:https://www.cnblogs.com/buddho/p/8075214.html

你可能感兴趣的文章
Linux高级编程--07.进程间通信
查看>>
oracle 中查看一张表是否有主键,主键在哪个字段上的语句怎么查如要查aa表,...
查看>>
必做作业2:IPAD笔记应用调研
查看>>
struct tm
查看>>
Windows 的 AD 域寄生于 Linux 机器
查看>>
把字符串添加到HashMap中
查看>>
bzoj2763: [JLOI2011]飞行路线
查看>>
Centos7.5中安装JDK1.8环境变量配置
查看>>
windows 挂载windows 共享盘为本地磁盘
查看>>
mojo 默认use utf8;
查看>>
基于SQL_ID查看对象大小
查看>>
【JAVAWEB学习笔记】02
查看>>
转 CSS hack:针对IE6,IE7,firefox显示不同效果
查看>>
js离开或刷新页面检测(且兼容FF,IE,Chrome)
查看>>
Oracle Database 软件及补丁下载地址
查看>>
nodejs 入门一(环境及插件)
查看>>
PHP连接数据库(mysql)
查看>>
HTML&CSS 第一天 笔记
查看>>
layui中radio的动态加载(进入修改页面时,设置radio)
查看>>
Java web分页技术(jsp+servlet+Dao+javabean)
查看>>