我已经读过全局变量和静态全局变量之间的区别在于全局变量可以通过外部在另一个实现文件中引用,而静态全局变量仅本地化到该实现文件。有关更多信息,请参阅这两个问题:[ 1、2 ]。
foo()
据我了解,这意味着以下内容bar()
应该以相同的方式链接。这两个功能只能由MyClass
.
//MyClass.h
Class MyClass{
private:
static void foo();
};
//MyClass.cpp
void MyClass::foo(){}
static void bar(){}
我可以看到foo()
' 的声明更常见,因为它可以让头文件更完整地布局整个类(即使你不能/不应该使用私有的东西),但不好的做法是声明一个函数,如bar()
(hidden from头文件)?
对于上下文,我正在定义一个WNDPROC
需要静态才能工作的 Windows 消息,但这是一个相当丑陋的声明,我不确定是否应该将它完全隐藏在实现文件中或继续并在头文件中声明它.