【问题标题】:C++ new followed by classC++ new 后跟类
【发布时间】:2017-02-21 06:22:51
【问题描述】:

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

class CDelayEvent* m_pDelayEventList[DEF_MAXDELAYEVENTS];

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

m_pDelayEventList[i] = new class CDelayEvent;

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

  1. 这是有效的 C++ 吗?它可以编译,但我们以前从未见过。
  2. class 关键字在这种情况下有什么作用?
  3. 每次都删除它是否安全/更好?它有什么改变吗?

我找不到有关此问题的任何信息,因为搜索“新课程”只会找到不相关的文章和问题。

【问题讨论】:

  • 可选,可以省略。

标签: c++ class syntax semantics


【解决方案1】:

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

在 C++ 中,结构和类实际上是相同的,C++ 需要 structclass 关键字可选,因此可以将结构或类用作类型。

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

【讨论】:

  • 我知道 C 但使用 typedef 以 mystruct 的名称调用 struct mystruct 通常被认为是不好的做法 - 我永远不会猜到 C++ 标准将这种行为融入到语言中类。
  • @Kenji 类和结构都被“嵌入”了,因为它们被视为类型。
【解决方案2】:
  1. 这是有效的 C++ 吗?它可以编译,但我们以前从未见过。

是的。使用它是可选的。

  1. class 关键字在这种情况下有什么作用?

没什么特别的。

  1. 每次都删除它是否安全/更好?它有什么改变吗?

是的,删除它是安全的。这不会改变任何事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2019-07-26
    • 1970-01-01
    • 2012-01-29
    相关资源
    最近更新 更多