static assertion
static_assert 是在編譯時期的斷言,作用不言而喻的。
語法是這樣:
static_assert ( bool_constexpr , string )
其中:
bool_constexpr: 常量表示式
string: 如果bool_constexpr表示式為false, 這個string就是編譯時候報的錯誤。
看看**:
// run-time assert
assert(ptr != null)
// c++ 11
// compile-time assert
static_assert(sizeof(void *) == 4, 64-bit is not supported.);
constructor delegation
之前我們知道,乙個類的建構函式不可以呼叫這個類的其他建構函式。每個建構函式只能包含類的成員變數和共有函式。
// c++03
class a
void dosomethingelse()
public:
a()
a(int a)
};
但是c++11允許我們這麼幹!
// c++11
class a
public:
a()
a(int a) : a()
};
C 11 靜態斷言static assert
一 assert 在c 中,或中提供了assert巨集 執行期斷言 可以定義ndebug來禁用assert巨集。二 static asser c 11 靜態斷言static assert,編譯期斷言。static assert 常量表示式,提示字串 兩個引數,乙個是斷言表示式,由於是在編譯期間,所以...
C11編譯時斷言static assert
c 11標準新引入的static assert功能可以實現靜態斷言,是乙個非常強大的模板元程式設計工具,配合sfinae特性可以在編譯期發現不符合預期的不合理特化,並且給出自定義的錯誤資訊。1.static assert是 c11 中引入的關鍵字。static assert是 c11 中引入的巨集,...
Magic Number 在程式設計中的使用
magic no,好方法!假設我們有了一大塊緩衝區 以下稱buffer say,1m,這一塊緩衝區將用來滿足很多小的順序到來的記憶體請求,並且,其釋放先後次序和申請次序一致。我們可以考慮採用環形佇列來解決這個問題。為了記錄分配出去的記憶體塊 以下稱buflet 的大小 狀態等資訊,需要對記憶體區進行...