#define _crt_secure_no_warnings#include#include
#include
#include /**
* 常量表示式主要是允許一些計算發生在編譯時,即發生在**編譯而不是執行的時候。
* 這是很大的優化:假如有些事情可以在編譯時做,它將只做一次,而不是每次程式執行時都計算。 */
/*constexpr函式的限制:
函式中只能有乙個return語句(有極少特例)
函式必須返回值(不能是void函式)
在使用前必須已有定義
return返回語句表示式中不能使用非常量表示式的函式、全域性資料,且必須是乙個常量表示式
*/constexpr
intgetconst()
//err,函式中只能有乙個return語句
constexpr int
data()
constexpr
intdata2()
int a = 3
;constexpr
intdata3()
/*常量表示式的建構函式有以下限制:
函式體必須為空
初始化列表只能由常量表示式來賦值
*/struct
date
constexpr
int getyear()
constexpr
int getmonth()
constexpr
int getday()
private
:
intyear;
intmonth;
intday;
};void
mytest()
;
enum ;
constexpr
int num =getconst();
constexpr
int func(); //
函式宣告,定義放在該函式後面
constexpr int c = func(); //
err, 無法通過編譯, 在使用前必須已有定義
constexpr date prcfound ;
constexpr
int foundmonth =prcfound.getmonth();
std::cout
<< foundmonth << std::endl; //
10return;}
constexpr
intfunc()
intmain()
c 11 常量表示式
define crt secure no warnings include include include include 常量表示式主要是允許一些計算發生在編譯時,即發生在 編譯而不是執行的時候。這是很大的優化 假如有些事情可以在編譯時做,它將只做一次,而不是每次程式執行時都計算。constexp...
C 11系列 常量表示式
c 11有一些這樣的改善,這種改善保證寫出的 比以往任何時候的執行效率都要好。這種改善之一就是生成常量表示式,允許程式利用編譯時的計算能力。假如你熟悉模板元程式設計,你將發現constexpr使這一切變得更加簡單。假如你不知道模板元程式設計,也沒什麼。constexpr使我們很容易利用上編譯時程式設...
C 11之常量表示式
2013 09 17 c 11有一些這樣的改善,這種改善保證寫出的 比以往任何時候的執行效率都要好。這種改善之一就是生成常量表示式,允許程式利用編譯時的計算能力。假如你熟悉模板元程式設計,你將發現constexpr使這一切變得更加簡單。假如你不知道模板元程式設計,也沒什麼。constexpr使我們很...