您好,登錄后才能下訂單哦!
本篇內容主要講解“C++怎么實現標準庫以外的智能指針”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++怎么實現標準庫以外的智能指針”吧!
R.31:如果需要實現標準庫以外的智能指針,遵照標準庫中的基本模式
后面章節中的準則也適用于其他類型的第三方和自定義的智能指針,它們對于發現一般的可能導致性能和正確性問題的智能指針錯誤很有效。你需要的是對所有智能指針都有效的的準則。
重載了一元*和->的任何類型(包括主要的模板和特化)都可以看作智能指針。
如果它是可拷貝的,就被認為是帶有參照計數的共享指針。
如果它不可拷貝,就被認為是獨占的unique_ptr。
Example(示例)
// use Boost's intrusive_ptr
#include <boost/intrusive_ptr.hpp>
void f(boost::intrusive_ptr<widget> p) // error under rule 'sharedptrparam'
{
p->foo();
}
// use Microsoft's CComPtr
#include <atlbase.h>
void f(CComPtr<widget> p) // error under rule 'sharedptrparam'
{
p->foo();
}
兩種情況都犯了sharedptrParam準則指出的錯誤:p是一個共享指針,但是這里沒有用到任何有關共享的功能。而且通過傳值方式傳遞智能指針是一種默認的許可;這個函數應該只在參與widget的生命周期管理時才接受智能指針。其他情況下:如果函數允許為空,它們應該接受widget*,否則應該接受widget&。這些智能指針匹配Shared_pointer概念,因此推薦這些準則推薦的規則也可以馬上適用于它們。
到此,相信大家對“C++怎么實現標準庫以外的智能指針”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。