【发布时间】:2017-07-07 09:22:07
【问题描述】:
我在一个网站上遇到过这个简单的代码。我没有完全理解。如果有人可以逐行分解代码并解释,对我很有帮助。
这是用于创建智能指针模板的代码(自动删除指针是创建此类指针的主要座右铭)
#include <iostream>
using namespace std;
template <class T>
class SmartPtr {
T* ptr;
public:
explicit SmartPtr(T* p = NULL) {
ptr = p;
}
~SmartPtr() {
delete(ptr);
}
T& operator*() {
return *ptr;
}
T* operator->() {
return ptr;
}
};
int main() {
SmartPtr<int> ptr(new int());
*ptr = 20;
cout << *ptr;
return 0;
}
【问题讨论】:
-
我认为 SO 不是通用代码遍历的地方。但是,我认为这里有一个很好的演练:link
-
只是模板类SmartPtr拥有T类型的指针。当它删除它会释放(删除)拥有的指针。 * 和 -> 运算符被重载,因此我们可以像直接使用拥有的指针一样使用它。
标签: c++ templates pointers smart-pointers