C++ 智能指針

Ref:
http://qa.helplib.com/176561
http://blog.csdn.net/dbzhang800/article/details/6403285
https://my.oschina.net/shelllife/blog/50810

1 簡(jiǎn)介

C++語言沒有自動(dòng)內(nèi)存回收機(jī)制,大部分使用C寫的上規(guī)模的軟件都存在一些內(nèi)存方面的錯(cuò)誤,產(chǎn)品的穩(wěn)定需要花費(fèi)大量的時(shí)間以及精力。對(duì)于C++而言,使用智能指針能便面該類問題。

2 智能指針

智能指針包含于頭文件memory中。如下所示:

#include <QCoreApplication>
#include <memory>
using namespace std;
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   shared_ptr<double> pd;
   return a.exec();
}

共有如下:

  • STL
  • auto_ptr (C++11已經(jīng)摒棄)
  • unique_ptr
  • shared_ptr
  • weak_ptr

使用注意事項(xiàng):

  • 必須顯示的使用智能指針對(duì)象
shared_ptr<double> pd; 
double *p_reg = new double;pd = p_reg; // not allowed (implicit conversion)
pd = shared_ptr<double>(p_reg); // allowed (explicit conversion)
shared_ptr<double> pshared = p_reg; // not allowed (implicit conversion)
shared_ptr<double> pshared(p_reg); // allowed (explicit conversion)

2.1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 導(dǎo)讀## 最近在補(bǔ)看《C++ Primer Plus》第六版,這的確是本好書,其中關(guān)于智能指針的章節(jié)解析的非常清晰...
    小敏紙閱讀 2,086評(píng)論 1 12
  • 1. 什么是智能指針? 智能指針是行為類似于指針的類對(duì)象,但這種對(duì)象還有其他功能。 2. 為什么設(shè)計(jì)智能指針? 引...
    MinoyJet閱讀 709評(píng)論 0 1
  • 專屬所有權(quán):unique_ptr 我們大多數(shù)場(chǎng)景下用到的應(yīng)該都是 unique_ptr。 unique_ptr 代...
    wayyyy閱讀 1,298評(píng)論 0 1
  • C++智能指針 原文鏈接:http://blog.csdn.net/xiaohu2022/article/deta...
    小白將閱讀 6,995評(píng)論 2 21
  • C++ STL里面一共提供了4種智能指針: 第一個(gè)是C++98提供的,后面三個(gè)是C++11提供的(第一個(gè)已經(jīng)被C+...
    Mordekaiser閱讀 880評(píng)論 0 1

友情鏈接更多精彩內(nèi)容