练习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;
};