问一个极新手的问题,关于类外的函数。
我在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函数压栈/出栈而已.