1. 程式人生 > >C++ const 和 constexpr 的區別

C++ const 和 constexpr 的區別

語義上:
constexpr:告訴編譯器我可以是編譯期間可知的,盡情的優化我吧。
const:告訴程式設計師沒人動得了我,放心的把我傳出去;或者放心的把變數交給我,我啥也不動就瞅瞅。

語法上:
constexpr是一種比const 更嚴格的束縛, 它修飾的表示式本身在編譯期間可知, 並且編譯器會盡可能的 evaluate at compile time. 在constexpr 出現之前, 可以在編譯期初始化的const都是implicit constexpr. 直到c++ 11, constexpr才從const中細分出來成為一個關鍵字, 而 const從1983年 c++ 剛改名的時候就存在了