C++ new 后跟 class

C++ new followed by class

我和一个朋友正在研究一个古老的 C++ 代码库。这段代码中定义了一个CDelayEvent指针数组如下

class CDelayEvent* m_pDelayEventList[DEF_MAXDELAYEVENTS];

其中各种对象的分配方式如下

m_pDelayEventList[i] = new class CDelayEvent;

我的问题是在两行中都使用了关键字 class。代码编译有和没有它的两行。

  1. 这是有效的 C++ 吗?它可以编译,但我们以前从未见过。
  2. class 关键字在此上下文中的作用是什么?
  3. 是否safe/better 将其全部删除?它有什么改变吗?

我找不到关于这个问题的任何信息,因为搜索 "new class" 只会找到不相关的文章和问题。

你知道C吗?那你知道一个结构是怎么用的吗?并且您需要使用 struct 关键字,例如声明结构变量?

在 C++ 中结构和 classes 确实是一样的,C++ 需要 structclass 关键字 可选所以结构或 class 可以用作类型。

因此在您的情况下,您可以使用 class CDelayEvent 或仅使用 CDelayEvent,它们在语义上是相同的。

  1. Is this valid C++? It compiles, but we have never seen this before.

是的。使用它是可选的。

  1. What does the class keyword do in this context?

没什么特别的。

  1. Is it safe/better to remove it everyhwere? Does it change anything at all?

是的,删除它是安全的。那不会改变任何东西。