Experiment 7: Implementing a Smart Pointer
内容:
了解 C++ 中的智能指针,并自己实现一个智能指针:
设计并实现 counted_ptr<T> 类型,该类型存储两个对象:一个指向 T 类型对象的指针,一个指向代表该 T 对象“使用计数”的整型数的指针, 该整型数被所有指向该 T 对象的计数指针(counted_ptr)所共享,对于一个确定的 T 对象,“使用计数”的取值代表了指向该对象的所有计数指针的总数;
counted_ptr 的构造函数在自由存储区中为 T 对象和其“使用计数”分配内存空间;为 counted_ptr 的 T 设计一个初始值;
当最后一个指向 T 对象的 counted_prt 被销毁时,counted_ptr 的析构函数应负责销毁 T 对象;
实现 counted_ptr 类型的相关操作,以使我们能够与使用指针相同的方式使用 counted_ptr 类型的对象;
最后,编写 counted_ptr 的测试程序,验证 counted_ptr 的正确性。
注:这一习题是“智能指针”的一个例子,它能够保证一个对象的存在, 直至该对象的最后一个使用者停止使用该对象;T 类型可以是任意有效的类型。