初学者C ++ - 解释类定义

时间:2015-12-08 08:24:40

标签: c++ pointers linked-list doubly-linked-list

我是C ++的初学者,需要一些帮助来理解基础知识。这是我的班级定义:

template <class T>
    class List;
template <class T >
    class Node {
    friend class List<T>;
private:
    Node *prev, *next;
public:
    T data;
    Node() :prev(), next() {}
    Node * Prev();
    Node * Next();
    Node * InsertAfter(List<T> * list, const T& data);
    Node * InsertBefore(List<T> * list, const T& data);
};

我没有完全确定如何格式化我的构造函数

    Node() :prev(), next() {}

此代码段在此处:

    Node * InsertAfter(List<T> * list, const T& data);
    Node * InsertBefore(List<T> * list, const T& data);

这是否意味着该方法应返回一个节点?

由于

1 个答案:

答案 0 :(得分:1)

我会编写如下所示的覆盖默认构造函数:

Node() 
 : prev(nullptr)
 , next(nullptr) 
 {
 }

默认构造函数应始终包含例程,以将数据成员初始化为其归零值或未初始化的值(enum具有名称UNKNOWNINVALID的值)。如果您的任何对象保持未初始化状态,则如果有人尝试对未初始化的对象执行任何操作,则清零会导致段故障。如果我们留下空的构造函数体,那么调试比内存损坏容易。