数据结构中语句的问题

LUCKYWATER 2008-04-04 02:26:35

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;
这是第二个不明白的地方,这两个形参不是都是空吗?按照重载的定义,不是应该是形参不同才能重载吗?
这两个函数代码部分都相同为什么要分被写两个函数.

有可能有表达了不清楚的地方,各位大侠帮忙!
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LUCKYWATER 2008-04-05
  • 打赏
  • 举报
回复
谢谢..雪了不少~~
jieao111 2008-04-04
  • 打赏
  • 举报
回复
const 操作符可以判断重载。。。一个是给const类对象使用的,一个是给普通类对象使用的
ttkk_2007 2008-04-04
  • 打赏
  • 举报
回复
CNode() : data(T()), next(NULL) {}
===============================
成员初始化列表,将T()拷贝构造给data

T& GetTail();
T GetTail() const;
====================
一个是给const类对象使用的,一个是给普通类对象使用的
kuchao 2008-04-04
  • 打赏
  • 举报
回复

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()不是应该是模板的类型吗?怎么可以用来赋值的?

data(T()) 是个拷贝构造
ryfdizuo 2008-04-04
  • 打赏
  • 举报
回复
您可以google一下初始化列表,
http://blog.csdn.net/ruibird/archive/2007/04/05/1552373.aspx
ryfdizuo 2008-04-04
  • 打赏
  • 举报
回复
 T&      GetTail(); //这个函数是接口函数,返回引用,外面可以修改的成员的值
T GetTail() const; //const返回,外面不可以修改;
ryfdizuo 2008-04-04
  • 打赏
  • 举报
回复
CNode() : data(T()), next(NULL) {} 
初始化列表,不同于赋值=

T& GetTail();
T GetTail() const;
const类型可以重载函数;

64,849

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧