c ++定义静态类函数

时间:2015-07-14 03:23:07

标签: c++ function class

我有这个c ++代码:

static class UEnum* EViewModeIndex_StaticEnum()
{
    static class UEnum* Singleton = NULL;
    if (!Singleton)
    {
        ...
    }
return Singleton;
}

此代码是游戏引擎的一部分,可以正确编译和运行。但是,我不理解第一行和第三行中“类”的含义。

2 个答案:

答案 0 :(得分:3)

它是static功能。 classUEnum一致。此静态函数的返回类型为class UEnum*。但通常,我们不会在这里写课。所以它与static UEnum* EViewModeIndex_StaticEnum()

相等

答案 1 :(得分:3)

如果有class A,则可以使用class A声明变量,返回类型或参数类型。这与仅使用A用于同一目的相同。在这种情况下,class的使用是多余的,但是合法的。

class A
{
   // ...
};

void foo()
{
   // Create an instance of A using the simple syntax.
   A f1;

   // Create an instance of A using the redundant class keyword
   // Use of class is redundant but legal.
   class A f2;
}

但是,在某些情况下,有必要使用class/struct关键字来消除class/struct名称中同名函数的歧义。

来自C ++ 11标准:

  

9.1班级名称

     

...

     

类声明将类名引入声明它的作用域,并在封闭作用域中隐藏该名称的任何类,变量,函数或其他声明(3.3)。如果在声明了同名变量,函数或枚举数的作用域中声明了类名,那么当两个声明都在作用域中时,只能使用elaborated-type-specifier来引用该类(3.4。 4)。 [示例:

struct stat {
     // ...
  };

 stat gstat;   // use plain stat to
               // define variable

 int stat(struct stat*);   // redeclare stat as function
 void f() {
   struct stat* ps;        // struct prefix needed
                           // to name struct stat
   stat(ps);               // call stat()
}
     

- 结束示例]