1. 程式人生 > >常量表達式 & constexpr

常量表達式 & constexpr

能夠 運用 expr 使用 結果 推出 con const對象 普通

【常量表達式】

一個這樣的表達式:值不會改變 && 在編譯過程中就能夠得到計算結果

常見的常量表達式:字面值、用常量表達式初始化的const對象

一個對象是不是常量表達式由它的數據類型和初始值共同決定:

  const int cc = 1;  cc是一個常量表達式,因為它①是一個常量,②值在編譯過程就能夠得到(使用字面值初始化的)。

  int cz = 1;     cz盡管由字面值初始化,但它的數據類型是int,所以它不是常量表達式。

  const int cd = get_val();  cd不是一個常量表達式,盡管它是一個常量,但它的值直到運行時才能獲取到。

運用到常量表達式的情形:數組的大小

【constexpr變量】

因為很難分辨一個初始值到底是不是常量表達式,所以我們推出了constexpr類型。

聲明為constexpr的變量一定是一個常量,而且必須用常量表達式初始化:

  constexpr int mf = 20;

  constexpr int lm = mf + 1;

  constexpr int sz = get_val();

不能使用普通函數作為constexpr變量的初始值,所以上面的get_size()必須是constexpr函數,這種函數足夠簡單以至於編譯時就可以計算其結果。

用處,比如你想設置一個常量表達式作為數組的大小,便可以設置如上變量。

常量表達式 & constexpr