这段代码我不是很清楚
外层是一个class
,内层是一个struct
,谁能帮我解释一下?
class Stack {
struct Link {
void* data;
Link* next;
Link(void* dat, Link* nxt):
data(dat),next(nxt) {}
}* head;
public:
Stack():head(0) {}
~Stack() {
require(head==0,"Stack not empty");
}
void push(void* dat) {
head = new Link( dat, head );
}
void peek() const {
return head ? head->data : 0;
}
void* pop() {
if(head == 0) return 0;
void* result = head->data;
Link* oldHead = head;
head = head->next;
delete oldHead;
return result;
}
};
我的问题集中在前几行
class Stack {
struct Link {
void* data;
Link* next;
Link(void* dat, Link* nxt):
data(dat),next(nxt) {}
}* head;
class Stack
和struct Link
有什么关系?
最佳答案
Link
在 Stack
中声明,默认情况下它是 private
,因此不能在类外使用。
此外,Stack
有一个成员head
,类型为Link*
。
class
和 struct
之间的唯一区别是默认访问级别 - public
用于 struct,private
用于类,所以不要让“类内声明的结构”混淆你。除了访问级别之外,它与“在类内部声明的类”或“在结构内部声明的结构”相同。
关于c++ - 类和结构嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9906217/