为什么将struct node *写在struct节点内?

Abd*_*een 0 c++ struct nodes data-structures

我已经多次看到C ++中的节点类被定义为:

struct node
{
    whatever data;
    struct node* pointerToAnyLinkedNode;
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是为什么排在第。4,'struct'是在node *之前写的?它有特殊目的吗?因为如果我不写它不会造成任何问题。很抱歉,如果这个问题重复。我找不到一个BTW。

Lig*_*ica 5

这是因为这个成语起源于C(其中,结构类型必须与被命名struct为开始)和在线教程的C ++社区拷贝一个令人不安的很大比例/粘贴自己的代码,而不是真正想他们在做什么。

(这也是为什么struct tm没有充分理由在C ++代码中到处可见的原因。)

在C ++中,struct此处的关键字是多余的。

公平地讲,如果您正在编写标头并旨在与C程序兼容,那是保留它的一个很好的理由。