数据结构中语句的问题
一
template<typename T>
class CNode
{
public:
T data;
CNode<T> *next;
CNode() : data(T()), next(NULL) {}
CNode(const T &initdata) : data(initdata), next(NULL) {}
CNode(const T &initdata, CNode<T> *p) : data(initdata), next(p) {}
};
CNode() : data(T()), next(NULL) {}
为什么用data(T()) 这个的意思是data = T() 吧?
我在debug模式下运行到这条语句查看data变量, data = 1我有点不明白.为什么data = 1,T()不是应该是模板的类型吗?怎么可以用来赋值的?
template<typename T>
class CSList
{
protected:
int m_nCount;
CNode<T> *m_pNodeHead;
public:
CSList();
CSList(const T &initdata);
~CSList();
public:
int IsEmpty() const;
int GetCount() const;
int InsertBefore(const int pos, const T data);
int InsertAfter(const int pos, const T data);
int AddHead(const T data);
int AddTail(const T data);
void RemoveAt(const int pos);
void RemoveHead();
void RemoveTail();
void RemoveAll();
T& GetTail();
T GetTail() const;
T& GetHead();
T GetHead() const;
T& GetAt(const int pos);
T GetAt(const int pos) const;
void SetAt(const int pos, T data);
int Find(const T data) const;
};
二
T& GetTail();
T GetTail() const;
这是第二个不明白的地方,这两个形参不是都是空吗?按照重载的定义,不是应该是形参不同才能重载吗?
这两个函数代码部分都相同为什么要分被写两个函数.
有可能有表达了不清楚的地方,各位大侠帮忙!