首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

是因为静态函数暗藏了全局函数吗

2012-09-28 
是因为静态函数隐藏了全局函数吗s2.cpp里#include iostreamusing namespace stdvoid ex()extern void

是因为静态函数隐藏了全局函数吗
s2.cpp里
#include <iostream>
using namespace std;
void ex();
extern void sta();


void ex()
{
cout << "ex()" << endl;
sta();
}



static void sta()
{
cout << "static::sta()" << endl;

}

s1.cpp里
#include <iostream>
using namespace std;

extern void ex();
void sta()
{
cout << "::sta()" << endl;
}

int main()
{
ex();
sta();
system("pause");
return 0;
}
运行结果是
ex()
static::sta()
::sta()
可见ex()函数中总是调用的是static sta(),怎样调用全局函数sta呢

[解决办法]
没有编写类,为什么要使用静态函数?
[解决办法]
你在s1.cpp中都没有去包含引用s2.cpp这个文件。。。什么全局不全局。。。
[解决办法]
调用前加::即可调全局的
另外static函数是普遍存在的,以表明该函数只可以被本CPP的函数调用
[解决办法]

探讨
调用前加::即可调全局的
另外static函数是普遍存在的,以表明该函数只可以被本CPP的函数调用

[解决办法]
楼上说得有道理,你好像也清楚了
[解决办法]
你把s1.cpp中void sta()的声明定义删掉,你看看,会不会出错,不引用他的头文件怎么可能能用他文件中的函数呢?出发用extern声明的
[解决办法]
探讨
你把s1.cpp中void sta()的声明定义删掉,你看看,会不会出错,不引用他的头文件怎么可能能用他文件中的函数呢?出发用extern声明的

[解决办法]
静态函数只能在本文件内有效,并只能在本文件中使用,调用。出了文件就是未定义的吧,无效了。

热点排行