我是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);
这是否意味着该方法应返回一个节点?
由于
答案 0 :(得分:1)
我会编写如下所示的覆盖默认构造函数:
Node()
: prev(nullptr)
, next(nullptr)
{
}
默认构造函数应始终包含例程,以将数据成员初始化为其归零值或未初始化的值(enum
具有名称UNKNOWN
或INVALID
的值)。如果您的任何对象保持未初始化状态,则如果有人尝试对未初始化的对象执行任何操作,则清零会导致段故障。如果我们留下空的构造函数体,那么调试比内存损坏容易。