C 智慧型指標在介面中的應用

2021-09-11 16:56:11 字數 604 閱讀 9276

一,應用場景

使用mysql資料庫時, 當應用資料寫入mysql失敗後,使用sqlite資料庫作臨時儲存,然後更新到mysql資料庫中。

抽象介面如下:

#include #include class idatabase;

class cmysqldatabase;

class csqlitedatabase;

typedef std::shared_ptrspidatabase;

typedef std::shared_ptrspmysqldatabase;

typedef std::shared_ptrspsqlitedatabase;

class idatabase

//使子類能夠呼叫自己的析構函式

virtual int execsql(const std::string &sql) = 0;

//......略

};class cmysqldatabase

virtual int execsql(const std::string &sql)

;

發現可以將子類智慧型指標直接賦值給父類智慧型指標,從而完成記憶體管理操作。

C 中的智慧型指標

長久以來 c 最被人詬病的就是它的記憶體管理,寫個稍微複雜點的程式就經常會碰到記憶體洩漏問題。為了解決這個問題,c 也做了許多努力。在 c 98 標準中首先提出了智慧型指標的概念,引入了 auto ptr。但是在實踐中,auto ptr 有不少問題。因此在 c 11 標準中對原有的智慧型指標又做了進...

c 中的智慧型指標

1.智慧型指標的作用 為了防止記憶體洩露的問題 c 程式設計中使用堆記憶體是非常頻繁的操作,堆記憶體的申請和釋放都由程式設計師自己管理。程式設計師自己管理堆記憶體可以提高了程式的效率,但是整體來說堆記憶體的管理是麻煩的,c 11中引入了智慧型指標的概念,方便管理堆記憶體。使用普通指標,容易造成堆記憶...

C 中的智慧型指標

c 中的四個智慧型指標分別是 1.shared ptr 2.unique ptr 3.weak ptr 4.auto ptr 已經被c 11棄用 在c 11的環境中會爆警告warning auto ptr is deprecated 智慧型指標的作用是管理乙個指標。因為存在以下這種情況 申請的空間在...