2011年计算机二级C++辅导实例编程(17)

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  29 // 构造空指针.

  30 explicit smart_ptr () : p(NULL), u(NULL)

  31 {}

  32

  33 // 智能指针析构.

  34 ~smart_ptr (void)

  35 {

  36 // 如果引用计数等于0, 则删除数据和引用计数, 并置p为NULL.

  37 // 此处需要注意的是, 共用的u并未置为 NULL, 在其它指针析构

  38 // 时, p为NULL, 则不会重复delete.

  39 if (p && u->release() <= 0)

  40 {

  41 delete p;

  42 delete u;

  43 p = NULL;

  44 }

  45 }

  46

  47 // 智能指针拷贝构造函数.

  48 smart_ptr (const smart_ptr& t)

  49 {

  50 p = t.p;

  51 u = t.u;

  52

  53 if (u) // 必须判断空值.

  54 {

  55 u->addref(); // 增加引用计数.

  56 }

  57 }

  58

  59 // 指针赋值.

  60 void operator= (smart_ptr& t)

  61 {

  62 // 首先将引用计数减1, 然后再判断是否小于0, 如果小于0, 则delete.

  63 if (p && u->release() <= 0)

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答