C ++中的静态类成员变量和静态变量

Avadhana解决方案

静态类成员变量和静态变量之间的主要区别是什么?静态类成员和静态变量都可以从任何类的成员函数访问。静态类成员和静态变量的具体用途是什么?

马丁·史洛特(Martin Schlott)

唯一的原因是代码的清洁度。您不能限制对全局静态变量的访问,例如

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

修饰符protectedprivate表明您不希望“局外人”访问这些值。

protectedprivate 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);

至少要补充一点:如果您不应该使用静态变量,则是一个完整的其他讨论

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章