第十三章 13.2.2节练习

练习13.27

定义你自己的使用引用技术版本的HasPtr。

解答:

class HasPtr{
public:
  HasPtr(const string& s = string()):ps(new string(s)), i(0), use(1){}
  //...
private:
  string *ps;
  int i;
  size_t *use;
};
在计数上面,我没有使用指针的方式。


练习13.28

给定下面的类,为其实现一个默认构造函数和必要的拷贝控制成员。

//(a)
  class TreeNode{
    private:
      string value;
      int count;
      TreeNode *left;
      TreeNode *right;
  };

//(b)
  class BinStrTree{
    private:
      TreeNode *root;
  };

解答:

//(a)
  class TreeNode{
    public:
      TreeNode():value(string()), count(1), left(nullptr), right(nullptr){}
      TreeNode(const TreeNode& ori):value(ori.value), count(++ori.count), left(ori.left), right(ori.right){}
    private:
      string value;
      int count;
      TreeNode *left;
      TreeNode *right;
  };

//(b)
  class BinStrTree{
    public:
      TreeNode():root(nullptr){}
      TreeNode(const TreeNode& ori):root(ori.root){}
    private:
      TreeNode *root;
  };


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值