【转】浅析auto_ptr(11)
时间:2025-07-14
时间:2025-07-14
智能指针,auto_prt的基本用法,及其示例
}
private:
int __age;
char *__name;
};
int main(int argc, char *argv[])
{
try
{
auto_ptr<Cat> mycatAptr(new Cat("Bother", 2));
//此时au_mycat_a便俘获了指向新建Cat对象的指针
//可以使用au_mycat_a来对对象进行操作了,比如“叫”
mycatAptr->Beep();
auto_ptr<Cat> mycatBptr;
mycatBptr = mycatAptr;
//此时,mycatAptr把控制权交给了mycatBptr
mycatBptr->Beep();
//此时如果再次调用au_mycat_a->Beep()就会产生错误。
mycatAptr.reset(mycatBptr.release());
//mycatAptr重启掌控对象,mycatBptr转让了对对象的控制
mycatAptr->Beep();
//此时如果mycatBptr->Beep()将会出错。
Cat *tmp = mycatAptr.release();
//mycatAptr也拒绝了对对象的控制,release()返回指向被放弃的对象的指针(对象并没有被删除)
tmp->Beep();
//此时mycatAptr已经不能在调用Beep()函数了。
}
catch (CatException &ce)
{
cout << ce.what() << endl;
}
return 0;
}
这是在mingw32-3.4.4下找到的源文件。
上一篇:预分解窑操作的体会(二)