函数签名中的"class"关键字 - 它是标准C++吗?

'class' keyword in function signature - is it standard C++?

本文关键字:标准 C++ 关键字 class 函数      更新时间:2023-10-16

我正在研究给我的代码,我看到:

AFPSGameMode::AFPSGameMode(const class FPostConstructInitializeProperties& PCIP)
    : Super(PCIP) {   }

我对class关键字的使用特别好奇。这是标准C++吗?如果是,这意味着什么?

谢谢。

这里允许使用 class 关键字,只是很少看到它放在这里,因为它可以完全省略(如果这个类之前已经声明过)或替换为前向声明

void foo(const class FPostConstructInitializeProperties& p){ ... }

相当于:

class FPostConstructInitializeProperties; // <-- forward declaration
void foo(const FPostConstructInitializeProperties& p){ ... }

不要与奇怪的命名约定混淆。您提供的片段表达了如下内容:

class B{
public:
    B(){ }
    B(const B& b){ };
};
class A{
public:
    B my_b;
    A(const class B& b) : my_b(b) { }  // <-- class keyword in ctor's param decl.
};

例如,可以这样使用(但我想它已经足够清楚了):

int main() {
    B b;
    A a(b);
}

因为它是旧的 C,如果你有结构说,

struct account
{
int field;
..
};

您可以使用它来创建其变量(对象),例如,

account obj;

struct account obj; .

class也是如此,您可以使用它,也可以避免使用它。但它通常不使用,但允许使用。