c++ - 类和结构嵌套

标签 c++ class struct

这段代码我不是很清楚

外层是一个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 Stackstruct Link有什么关系?

最佳答案

LinkStack 中声明,默认情况下它是 private,因此不能在类外使用。

此外,Stack 有一个成员head,类型为Link*

classstruct 之间的唯一区别是默认访问级别 - public 用于 struct,private 用于类,所以不要让“类内声明的结构”混淆你。除了访问级别之外,它与“在类内部声明的类”或“在结构内部声明的结构”相同。

关于c++ - 类和结构嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9906217/

相关文章:

c - 静态初始化结构为零

c++ - 创建静态库并将其链接到 Visual Basic Windows 窗体应用程序

c# - 外壳图标覆盖 (C#)

C++私有(private)类动态n维数组

node.js - 仅覆盖 Node 中类的构造函数

c - 使用指针和数组时关于不兼容指针类型赋值的警告?

c++ - 使用应用程序的 Windows API commctrl.h 无法在没有 Platform SDK 的计算机上运行

c++ - 在 C++、结构或类中应该使用什么来创建链接列表

python - 复制类实例

c - 读取 P6 二进制 ppm 文件