C++为什么摒弃auto_ptr
生活随笔
收集整理的這篇文章主要介紹了
C++为什么摒弃auto_ptr
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
先來(lái)看下面的賦值語(yǔ)句:
auto_ptr< string> ps (new string ("I reigned lonely as a cloud.")); auto_ptr<string> vocation; vocaticn = ps;上述賦值語(yǔ)句將完成什么工作呢?如果ps和vocation是常規(guī)指針,則兩個(gè)指針將指向同一個(gè)string對(duì)象。這是不能接受的,因?yàn)槌绦驅(qū)⒃噲D刪除同一個(gè)對(duì)象兩次——一次是ps過(guò)期時(shí),另一次是vocation過(guò)期時(shí)。要避免這種問(wèn)題,方法有多種: - 定義賦值運(yùn)算符,使之執(zhí)行深復(fù)制。這樣兩個(gè)指針將指向不同的對(duì)象,其中的一個(gè)對(duì)象是另一個(gè)對(duì)象的副本,缺點(diǎn)是浪費(fèi)空間,所以智能指針都未采用此方案。 - 建立所
總結(jié)
以上是生活随笔為你收集整理的C++为什么摒弃auto_ptr的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 烟是魔,酒是佛,不烟不酒难成佛下一句?
- 下一篇: C++如何选择智能指针