关于 OOP 和 struct 关键字的不确定性

Uncertainties about OOP and the struct Keyword

class NodeType { 
 public: 
    int info; 
    NodeType* link; 
};

我在学链表的时候遇到过这个,作为初学者,在第4行,指针link是classNodeType的对象,这个解释肯定是错误的,所以有人可以解释一下这一行是什么意思吗?当我与 OOP 的概念交互时,我不记得学过这个。

struct NodeType 
{ 
    int info; 
    struct NodeType* link; 
}; 

我认为这里的这个结构声明和上面声明的class是一样的,所以我的第二个问题是,为什么在line 4处有第二个struct关键字?可以删除关键字吗?这就是嵌套结构的现象吗?

是的,两个片段是一样的。

why is there a second struct keyword at line 4?

它被称为 详细类型说明符(一种前面带有 struct 的类型,或 class/union/enum;定义 class NodeType {} 不算一个)。

这里没用,可以去掉。它仅在第一次提到结构时有用,因此编译器还不知道它是结构。

在这方面,C++ 与 C 不同,C++ 每次都必须在前面加上 struct 才能引用结构。

[is] pointer link is an object of class NodeType?

不,class NodeType 的对象将是 NodeType link;,但它不会是指针。

你可以说 link 是一个 NodeType * 类型的对象(指向 NodeType 的指针)。