注册 登录
编程论坛 C++教室

请教C++primer中的指针型句柄

specilize 发布于 2011-04-21 19:00, 861 次点击
在讲到这一部分时,在Sales_item.h句柄类中有这样的一个函数
Sales_item(const Item_base& item):
        p(item.clone()),use(new size_t(1)){}
在Item_base.h中有
virtual Item_base* clone() const
      { return new Item_base(*this);}
我想问的是,这里Item_base中为什么要在clone函数中返回*this的副本,为什么不改为
virtual Item_base* clone() const
       { return this;}
然后用clone函数的返回值初始化Sales_item.h中的p指针成员,请详细说明一下
2 回复
#2
pangding2011-04-21 19:52
没看过这本书。

相信这么做的理由书中应该有解释吧?
只从这几行代码不太好判断。不过人家函数名叫 clone,应该就是拷贝一下当前的实例。你返回  this 岂不是返回的当前实例引用的感觉。
#3
lintaoyn2011-04-22 15:11
句柄得知道它标志的对象是否存在,就是说它得管理对象的生存与销毁。要不你直接用指针还整个句柄类干什么。
1