で SmartPtr クラスを初期化しnew Time(1,0,0)
ます。
//main.cpp
int main()
{
SmartPtr pTime0(new Time(0,0,1));
}
どこにも delete を呼び出していませんnew Time(1,0,0)
。すべてが正常に動作し、プログラムは準拠して実行されます。しかし、私は混乱していdelete Time(1,0,0)
ます。
ここで作成および削除する一時オブジェクトの概念がわかりません。どこかに書くときはいつでも、私は書かnew
なければならないことを知っていdelete
ます!誰かがどこ delete Time(1,0,0)
で行われるのか説明してもらえますか?
SmartPtr pTime0(new Time(0,0,1)) <--new
ここでは新しく割り当てられたメモリへのポインタを返し、 ctornew
で 2 回目にメモリを割り当てますか??
//SmartPtr.cpp
SmartPtr::SmartPtr(Pointee * p):_pointee(new Pointee(*p))
{}
SmartPtr::~SmartPtr()
{
delete _pointee;
}