唯一的原因是代码简洁。您不能限制对全局静态变量的访问,例如
static int globalValue=5;
它(至少)在您定义它的源文件中可见。
使用类静态,您可以为您的类提示的用户提供您希望如何访问它或被访问的方式。它只在类范围内可见:
class myGlobalContainer
{
public:
static int myInt;
protected:
static float myFloat;
private:
static bool myBool;
};
myInt 的访问由:
int x=myGlobalContainer::myInt;
public 修饰符提示用户您将此值视为 myGlobalContainer 的一部分并希望他使用它。您不会像使用 globalValue 那样污染全局命名空间。
修饰符protected 和private 表明您不希望“局外人”访问这些值。
protected 和 private static 属性主要用于在类的实例之间共享信息,例如实例计数器:
class myGlobalContainer
{
public:
myGlobalContainer()
{
if(counter==0)
DoSomeSpecialGlobalInit();
counter++;
}
~myGlobalContainer()
{
counter--;
if(counter==0)
DoSomeSpecialGlobalUnInit();
}
private:
static int counter=0;
};
public static 属性通常与const 一起出现。他们大多给用户一个快捷方式。例如:
COLOR white=COLOR::WHITE;
代替:
COLOR white=COLOR::FromAGBR(255,255,255,255);
添加最少:
是否应该使用静态是complete other discussion。