今天看了下Visual Studio 2008 C++标准库中的auto_ptr模板类的代码,由于感觉可读性太差,因此自己参考该代码,自己重新整理了一份代码。
这种智能指针有以下缺点。
1. 这种智能指针只能在其作用域能保证所包含的native指针的有效性。当作用域结束(如,函数返回)的时候,native指针的空间就被释放掉,该指针变为无效。因此,这种智能指针不能用作返回值。
2. 所有权问题。当使用一个智能指针为另一个智能指针赋值的时候,前一个指针会自动放弃对native指针的所有权,并将所有权移交个第二个智能指针。这样做是为了保证指针所有权的唯一性,避免了当一个智能指针失效导致另一个智能指针也失效的情况。
因此,我正在考虑使用参考计数(Reference Count)的方法来解决上述问题。