重载,覆盖和隐藏的区别
来源:互联网 发布:php一句话小马后门代码 编辑:程序博客网 时间:2024/04/30 02:44
重载:是指在相同范围内(同一个类),相同的函数名,但参数不一样
覆盖:是子类和父类范围内而言的,函数名相同,而且参数相同,并且是virtual 函数,这样如果是通过指针或引用来调用的话就可以根据实际的类型来动态决定调用子类还是父类的函数
隐藏:这个比较容易和覆盖混淆,他们都是对于子类和父类而言的。1)函数名相同,而且参数不同,不管是否是virtual;2)或者函数名相同,参数相同,但不是virtual函数;两种情况都是隐藏,那么子类中的函数会隐藏父类中的同名函数,父类中的函数就不可见了,如果你想调用它,要么编译出错(对于参数不同的情况);或者是调用了子类的同名函数(参数相同)
class A{
public:
void fun1(){printf("A fun1\n");}
void fun2(){printf("A fun2\n");}
};
class B:public A{
public:
virtual void fun1(){printf("B fun1\n");}
void fun2(int i){printf("B fun2\n");}
};
int main()
{
B b;
b.fun1(); // 调用的是B的fun1
b.fun2(); //编译出错
return 0;
}
- C++重载、覆盖和隐藏的区别
- 重载,覆盖和隐藏的区别
- C++覆盖、重载和隐藏的区别
- 重载、覆盖和隐藏的区别
- 重载、覆盖和隐藏的区别
- 重载、覆盖和隐藏的区别
- 重载、覆盖和隐藏的区别
- 重载、覆盖和隐藏区别
- 重载,覆盖和隐藏区别
- 重载、覆盖和隐藏区别?
- 重载、覆盖、隐藏的区别
- 重载,覆盖,隐藏的区别
- 重载、覆盖、隐藏的区别
- 重载、覆盖、隐藏的区别
- 重载、覆盖、隐藏的区别
- 重载 、覆盖、隐藏的区别
- 重载、覆盖、隐藏的区别
- 重载,覆盖隐藏的区别
- 根据经纬度求两点间距离实现源码(java)
- UITableView中cell之间的那条线
- iconv的用法
- 悲情时刻:死在2011年的科技产品
- 如何查看下载的android源码是哪个版本的
- 重载,覆盖和隐藏的区别
- Linux:Ubuntu 11.04/11.10下安装极点五笔输入法
- UIScrollView限制在1倍到2倍之间捏合放大缩小
- 深入理解 Android Activity的生命周期
- UIScrollView滚动, 中间显示整图, 前后露出部分图
- VS2010不能将参数 1 从“std::string”转换为“const char *”解决
- geoserver动态修改地图样式sld
- 浅析 Antiy Password Mixer 加密原理
- php自动获取字符串编码函数mb_detect_encoding 详细出处参考:http://www.jb51.net/article/27282.htm