亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中為什么使用not_null<T>表明空是無效值

發布時間:2021-11-24 11:50:57 來源:億速云 閱讀:332 作者:iii 欄目:大數據

這篇文章主要講解了“C++中為什么使用not_null<T>表明空是無效值”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++中為什么使用not_null<T>表明空是無效值”吧!

Reason(原因)

清晰性。一個使用not_null<T>參數的函數可以明確地表明:如果有必要,調用者有責任進行空指針檢查。類似的,返回not_null<T>的函數向調用者清晰的表明了不需要進行nullptr的檢查。

Example(示例)

not_null<T*> makes it obvious to a reader (human or machine) that a test for nullptr is not necessary before dereference. Additionally, when debugging, owner<T*> and not_null<T> can be instrumented to check for correctness.

not_null<T*>向讀者(人或機器)表明不需要在解引用之前進行nullptr檢查。另外,在調試的時候,onwer<T*>和not_null<T>可用于正確性檢查。

Consider:(考慮以下代碼:)

int length(Record* p);

When I call length(p) should I check if p is nullptr first? Should the implementation of length() check if p is nullptr?

在調用length(p)的時候需要首先檢查p是否是nullptr嗎?實現length()的時候應該檢查p是否為nullptr嗎?

// it is the caller's job to make sure p != nullptrint length(not_null<Record*> p);
// the implementor of length() must assume that p == nullptr is possibleint length(Record* p);  

not_null<T*>被假定不會是nullptr;T*可能是nullptr;兩者在內存上都表現為T*(因此不會付出額外的代價)。

Note(注意)

not_null is not just for built-in pointers. It works for unique_ptr, shared_ptr, and other pointer-like types.

not_null不止適用于內置指針。它也適用于unique_ptr和shared_ptr以及其他類似指針的類型。

Enforcement(實施建議)

  • (Simple) Warn if a raw pointer is dereferenced without being tested against nullptr (or equivalent) within a function, suggest it is declared not_null instead.

    (簡單)處于某個函數中的裸指針如果沒有進行nullptr(或等價的)檢查就解引用,則報警。建議定義為not_null。

  • (Simple) Error if a raw pointer is sometimes dereferenced after first being tested against nullptr (or equivalent) within the function and sometimes is not.

    (簡單)如果一個裸指針在解引用之前,有時會進行防空檢查有時又不檢查,報錯。

  • (Simple) Warn if a not_null pointer is tested against nullptr within a function.

    (簡單)如果not_null指針在函數內部進行了防空判斷,報警。

感謝各位的閱讀,以上就是“C++中為什么使用not_null<T>表明空是無效值”的內容了,經過本文的學習后,相信大家對C++中為什么使用not_null<T>表明空是無效值這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

德保县| 山阳县| 景宁| 西充县| 岳阳县| 泰州市| 恩平市| 德阳市| 罗城| 湄潭县| 木兰县| 友谊县| 内黄县| 东乡县| 德化县| 光泽县| 财经| 周至县| 英德市| 宁国市| 洛川县| 新建县| 神农架林区| 河北区| 策勒县| 开化县| 新源县| 九台市| 信阳市| 澳门| 牡丹江市| 聂荣县| 庆安县| 资中县| 澄迈县| 民权县| 孟津县| 岳阳市| 诏安县| 新巴尔虎左旗| 镇远县|