Effective C++ 第十三條 Use object to manage resources.
以對象管理資源
正常情況下,我們通常采用指針管理資源,如下
一般來說,這樣是大多數(shù)人的正常操作,但是考慮到一些特殊情況,比如在實(shí)例中未寫出來的 statements 中可能有其他語句會導(dǎo)致控制流在執(zhí)行 delete ptr; 之前離開函數(shù) fun 而造成資源浪費(fèi)。所以當(dāng)前有解決方案是使用對象來管理資源,在本例子中,就是使用智能指針來管理資源。
智能指針如 auto_ptr、shared_ptr 都是類封裝的指針,有析構(gòu)函數(shù),無論在函數(shù) fun 中是否提前結(jié)束,在程序結(jié)束之前,對象 ptr 就會執(zhí)行析構(gòu)函數(shù)從而釋放資源,相較于普通指針,智能指針更為安全。
注意:在現(xiàn)在的標(biāo)準(zhǔn)中 auto_ptr 已經(jīng)廢棄了,不再使用了。
關(guān)于智能指針的介紹這里推薦看 現(xiàn)代C++教程,https://changkun.de/modern-cpp/zh-cn/05-pointers。
標(biāo)簽: