c 11 常量表示式

2021-09-08 13:41:07 字數 1315 閱讀 4677

#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使我們很...