关于 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
的指针)。
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 classNodeType
?
不,class NodeType
的对象将是 NodeType link;
,但它不会是指针。
你可以说 link
是一个 NodeType *
类型的对象(指向 NodeType
的指针)。