我用 . 初始化 SmartPtr 类new Time(1,0,0)
。
//main.cpp
int main()
{
SmartPtr pTime0(new Time(0,0,1));
}
我没有在任何地方调用 delete on 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
这里返回一个指向新分配内存的指针,然后在ctor中我new
第二次分配内存??
//SmartPtr.cpp
SmartPtr::SmartPtr(Pointee * p):_pointee(new Pointee(*p))
{}
SmartPtr::~SmartPtr()
{
delete _pointee;
}