私はその概念に慣れていないので、私に負担をかけないでください。このコードがデストラクタ呼び出しを生成しないのはなぜですか? クラスの名前は一目瞭然です。SString は ~SString() にメッセージを出力します。1 つのデストラクタ メッセージのみを出力します。
int main(int argc, TCHAR* argv[])
{
smart_ptr<SString> smt(new SString("not lost"));
new smart_ptr<SString>(new SString("but lost"));
return 0;
}
これはメモリリークですか?impl。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;
}