我是这个概念的新手,所以不要对我太苛刻。为什么这段代码不产生析构函数调用?类的名称是不言自明的。SString 将在 ~SString() 中打印一条消息。它只打印一条析构函数消息。
int main(int argc, TCHAR* argv[])
{
smart_ptr<SString> smt(new SString("not lost"));
new smart_ptr<SString>(new SString("but lost"));
return 0;
}
这是内存泄漏吗?暗示。对于 smart_ptr 来自 这里
编辑:
//copy ctor
smart_ptr(const smart_ptr<T>& ptrCopy)
{
m_AutoPtr = new T(ptrCopy.get());
}
//overloading = operator
smart_ptr<T>& operator=(smart_ptr<T>& ptrCopy)
{
if(m_AutoPtr)
delete m_AutoPtr;
m_AutoPtr = new T(*ptrCopy.get());
return *this;
}