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

The*_* do 2 c++ parameters syntax

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

AFPSGameMode::AFPSGameMode(const class FPostConstructInitializeProperties& PCIP)
    : Super(PCIP) {   }
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Lih*_*ihO 5

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

void foo(const class FPostConstructInitializeProperties& p){ ... }
Run Code Online (Sandbox Code Playgroud)

这相当于:

class FPostConstructInitializeProperties; // <-- forward declaration
void foo(const FPostConstructInitializeProperties& p){ ... }
Run Code Online (Sandbox Code Playgroud)

不要混淆奇怪的命名约定.您提供的代码段表达了以下内容:

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.
};
Run Code Online (Sandbox Code Playgroud)

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

int main() {
    B b;
    A a(b);
}
Run Code Online (Sandbox Code Playgroud)