函数也会被隐藏!?
来源:互联网 发布:网络货币和虚拟货币 编辑:程序博客网 时间:2024/04/27 05:36
PFan上面有人提问了一个关于函数是否被重载的问题,程序如下:
#include<iostream>
using namespace std;
class B
{
public:
void m(int x)
{
cout<<x<<endl;
}
};
class D:public B
{
public:
void m()
{
cout<<"D::m()"<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
D d1;
d1.m();
d1.m(26); //错误 //??
return 0;
}
我并没有想出究竟是什么出了问题,但是知道如果把对象d1转换成基类就ok了,即((B)d1).m(26); 。
后来看了别人的回帖才知道函数也有scope的,也会被隐藏的。哎,笨了吧!!!
当子类的m()函数与基类的m()函数同名时,就会隐藏基类同名函数,所以m函数不能传参数, 所以d1.m(26)编译错误.
重载的条件有两个:一是同名函数参数不同;二是两个函数在同一scope中
该例子的两个函数不在同一scope,因此后者隐藏了前者
还有一个例子就是局部函数声明:
int f(int a);
int main()
{
extern int f(char *);
f(3); //error,不会重载
}
- 函数也会被隐藏!?
- c++函数名字隐藏
- 隐藏 LoadLibrary() 函数
- 函数重载、覆盖、隐藏
- 函数的隐藏
- 函数隐藏 覆盖
- 成员函数的隐藏
- 隐藏 LoadLibrary() 函数
- 虚函数隐藏
- 隐藏 LoadLibrary() 函数
- 函数重载、覆盖、隐藏
- 隐藏调用API函数
- C++ 函数隐藏
- 函数覆盖与函数隐藏
- 函数重载、函数覆盖以及函数隐藏
- 函数重载(overload),函数覆盖,函数隐藏
- [c/c++]函数的隐藏
- 函数重载,覆盖与隐藏
- 在Oracle 10g里启动自动归档模式
- A small trail through the Linux kernel(ZT)
- emacs中让~文件不出现
- 感冒跑肚
- 青年人如何获得成功、自信、快乐
- 函数也会被隐藏!?
- 什么是技术?
- 特殊的日子~
- 可怕的天网防火墙
- J2ME程序开发全方位基础讲解汇总
- 把丢失的利润找回来
- [ASP.NET如何在客户端调用服务端代码
- [今天互联网关注][推荐]人性的三大弱点及其商业应用--web2.0!!!
- 两个boost::function判等问题