loki庫提供了一種方法,要求函式返回後,使用者必須對其進行檢查或則賦值。以必須判斷指標為例進行說明。
自己寫的**簡化了很多
checkreturn.h
#pragma once
#include
template
struct triggerassert
};// 檢查函式返回值是否被賦值了,如果沒有被賦值,則認為是非法的。必須給返回值賦值,即必須有所有權,不能出現中間變數
templateclass tassert = triggerassert>
class ccheckreturn
/// 必須轉換成bool檢查
// 此處也可以將bool替換成t表示必須賦值
inline operator bool ( void )
inline ~ccheckreturn( void )
private:
const t* m_value;
mutable bool m_checked; //是否被check過了。如果呼叫過operator則會賦值為true
};測試使用。
#include "stdafx.h"
#include "testcheckreturn.h"
#include "checkreturn.h"
class ctestptr
void ctestcheckreturn::test()
int ii = 10;
}我們可以根據這個思想實現我們想要的其它檢查
檢查new的返回值
我們知道,使用malloc calloc等分配記憶體的函式時,一定要檢查其返回值是否為 空指標 亦即是檢查分配記憶體的操作是否成功 這是良好的程式設計習慣,也是編寫可靠程式所必需的。但是,如果你簡單的把這一招應用到new上,那就不一定正確了。我經常看到類似這樣的 int p new int size...
檢查 new 的返回值
我們都知道,使用 malloc calloc 等分配記憶體的函式時,一定要檢查其返回值是否為 空指標 亦即檢查分配記憶體的操作是否成功 這是良好的程式設計習慣,也是編寫可靠程式所必需的。但是,如果你簡單地把這一招應用到 new 上,那可就不一定正確了。我經常看到類似這樣的 int p new int...
C C 誤區五 檢查 new 的返回值
首先澄清一下,這個誤區僅對 c 成立,這裡不過是沿用 c c 誤區 這個銜頭罷了。我們都知道,使用 malloc calloc 等分配記憶體的函式時,一定要檢查其返回值是否為 空指標 亦即檢查分配記憶體的操作是否成功 這是良好的程式設計習慣,也是編寫可靠程式所必需的。但是,如果你簡單地把這一招應用到...