读书人

问一个极新手的有关问题关于类外的函

发布时间: 2012-08-29 08:40:14 作者: rapoo

问一个极新手的问题,关于类外的函数。
我在demo里建了两个类:
GameTwentyFour.h
GameTwentyFour.cpp

ServerControl.h
ServerControl.cpp

GameTwentyFour.cpp 代码如下:

C/C++ code
void TestFunc(char name[]);GameTwentyFour::GameTwentyFour(void){}GameTwentyFour::~GameTwentyFour(void){}int GameTwentyFour::StopGame(void){    TestFunc("GameTwentyFour");    return 0;}void TestFunc(char str[]){    cout<<"*********************************** "<<str<<" ************************************"<<endl;}


ServerControl.cpp 代码如下:

C/C++ code
ServerControl::ServerControl(void){}ServerControl::~ServerControl(void){}int ServerControl::Show(void){    TestFunc("ServerControl");    return 0;}


问:
1.为什么在ServerControl.cpp里无法访问TestFunc()函数?

2.TestFunc()不是全局函数吗?

3.如果不是,那TestFunc是什么样的函数,他属于那个管?

4.TestFunc()函数的作用域范围是什么?

5.如果多次new 这个GameTwentyFour类对象时,是不是也会出现多个TestFunc()函数,意思是一个类对象会有一个TestFunc()函数?

求大神鞭教。

[解决办法]
1.一般来说的话全局的函数作用域是文件域(文件以内),跨文件的函数调用要加extern 表明文件外引用域;
A文件中定义函数,B文件中要extern下才可以用;
2.TestFunc()是全局函数;
3.TestFunc()作用域归定义他的那个文件,工程内其他文件要使用就得用extern表明域;
4.参考以上;
5.TestFunc()不是类成员函数,所以不属于任何类对象,只是类对象调用了它而已,在不同对象调用时,在内存里面会有多次的TestFunc函数压栈/出栈而已.

读书人网 >C++

热点推荐