定义静态类函数
c++ Defining static class function
我有这样的c++代码:
static class UEnum* EViewModeIndex_StaticEnum()
{
static class UEnum* Singleton = NULL;
if (!Singleton)
{
...
}
return Singleton;
}
这段代码是游戏引擎的一部分,可以正确编译和运行。但是,我不理解第一行和第三行"class"的含义
当您有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)。如果在作用域中声明了类名,并且声明了同名的变量、函数或枚举数,那么当这两个声明都在作用域中时,只能使用详细的类型说明符来引用类(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() }
- end示例]
这是static
函数。class
与UEnum
在一起。这个静态函数的返回类型是class UEnum*
。但通常,我们在这里不写class。它相当于static UEnum* EViewModeIndex_StaticEnum()
相关文章:
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 在C++中使用非静态类函数的函数
- 类中静态函数C++意外结果
- 在C++中,为什么使用静态类函数而不是常规函数?
- 如何启用使用另一个类的静态方法的模板函数的自动推导,从而消除冗长的调用方代码
- 静态类属性,C++中的多个构造函数
- 如何从静态类函数初始化静态类对象
- `enable_if()`以禁用模板化类的静态成员函数声明
- 从静态成员函数访问私有非静态类变量 - C++
- 使用类函数将类对象添加到数组中
- 扩展包含静态函数的类
- uninit_member:非静态类成员字段 m_cJobState.bstatus 未在此构造函数中初始化,也不在其调
- uninit_member:非静态类成员m_wszParams未在此构造函数中初始化,也不在它C++中调用的任何函数中初
- 说明通过指针访问非静态类成员函数
- 具有私有构造函数的类的静态成员
- 将类函数与类定义的其余部分分离
- 是否可以在没有模板参数的情况下使用模板化类的静态类函数
- C++:从非类函数调用类方法
- 类函数更改类cpp中的其他数据
- 从派生类对象调用基类函数.派生类构造函数中设置的基类数据成员