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

标签 c++ syntax parameters

<分区>

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

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++ - 函数签名中的“class”关键字 - 它是标准 C++ 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22783233/

相关文章:

c++ - 运算符重载以构造异常消息

c++ - 当设置为 begin 时,vector<int>::iterator 从 vector 的末尾开始

python - 如何以 pythonic 方式执行此操作?

C 编程 - 多行注释

python : function type parameter

c++ - MSVS 2015 : vector<bool> has no 'data' member

JSON JQ 如果没有 else

inheritance - 带参数的 Python 3 类继承

generics - 如何使用未出现在第一个参数列表中的类型参数来改进 Scala 的类型推断?

c++ - MSVC2005 std::_Iterator_base::function 在调试时速度缓慢