我对这段代码不是很清楚
外面是一个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;
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题是关注前几行
class Stack {
struct Link {
void* data;
Link* next;
Link(void* dat, Link* nxt):
data(dat),next(nxt) {}
}* head;
Run Code Online (Sandbox Code Playgroud)
class Stack和之间的关系是struct Link什么?
Link在内部声明Stack,因为private默认情况下,它不能在类外使用.
此外,Stack还有一个head类型的成员Link*.
class和之间唯一的区别struct是缺省访问级别 - public对于struct和privateclass,所以不要让"在类中声明的struct"让你感到困惑.除了访问级别之外,它与"在类中声明的类"或"在结构内声明的结构"相同.