对c++的多态性的一个疑问
来源:互联网 发布:vs2013 c语言 安装 编辑:程序博客网 时间:2024/04/29 06:08
先看一个超类(Super)一个子类(Sub)的定义
class Super{public: Super(); ~Super(); virtual void someMethod(); };
class Sub : public Super{public: Sub(); ~Sub();protected: virtual void someMethod();};
对于子类重载父类的someMethod方法时,由父类的public级别,变为子类的protected时,如果用如下代码作测试,则会输出子类的方法,这是多态性的一个体现。
Sub mySub; Super& superTest = mySub; superTest.someMethod();
但是,如果子类重载父类的someMethod方法,是将父类的protected 级别变为子类的protected时(代码如下),还是用上面的测试代码,就会编译出错,说是不能调用父类的
protected方法,这里理解不了,不是应该调用子类的someMethod的方法才对吗,为什么会说是调用父类的protectd方法出错呢?
我的想法是,这确实是调用了子类的方法,但是子类的方法是对父类方法的重载,而在父类里,someMethod方法是受保护的,所以不能重载,但是我觉得我的想法也是错的,
先记下来,回头再理解一下。
class Super{public: Super(); ~Super();protected: virtual void someMethod(); };class Sub : public Super{public: Sub(); ~Sub(); virtual void someMethod();};
- 对c++的多态性的一个疑问
- 对struts form bean 的一个疑问
- 对SharpMap的疑问
- 对theano求导的时候的一个疑问
- size_t的一个疑问
- Ajax的一个疑问
- 一个疑问的笔记
- 4.c++-对C++多态性的一点理解
- C/C++的疑问
- 对的ADO的疑问
- 对Java多态性的理解
- 对这个blog的疑问
- 对Hibernate效率的疑问
- 对jsf的一点疑问
- 对输出流的疑问
- 自己对BFC的疑问
- 对技术的一些疑问
- objective-c 内存储器管理之 "autorelease"的一个疑问
- VC2008 mfc90ud.dll无法找到问题如何解决
- 在 Windows 上安装 SVN Subversion 服务端
- 终于在hdojAC了100题,以此文纪念一下
- cpu
- 调试小技巧
- 对c++的多态性的一个疑问
- hdoj2094
- jquery技巧
- 2011-09-19 java网络编程
- FAT12 文件系统格式描述
- 34个有用的ActionScript 3.0的API
- aaaaaaaaaaaaaaaaaaa
- linux下常用svn命令
- 软件质量概述 3 不同质量保障技术的相对效能