constexpr 乙個常態的世界

2021-10-03 03:39:16 字數 1090 閱讀 2753

#include #includeusing namespace std;

int sqr(int n)

int main()

int main()

else

}

constexpr int d=factorial(10);
const的原義和基礎的含義,自然是表示修飾他的內容不會變化.

const在型別宣告的不同位置會產生不同的結果,對於常見的const char *這樣的型別宣告,意義和char const *相同,是指向常字元的指標,指標指向的內容不可修改. char *const ,代表指向字元的常指標,指標本身不可更改.本質上,const 用來表示乙個執行時常量.

const和constexpr在很多情況下還是等價的,他們也有些細微的區別,其中之一為是否內聯的問題.

c++  17引入內聯變數的概念,允許在標頭檔案中定義內聯變數,然後像內聯函式一樣,只要所有的定義都相同,那變數的定義出現多次也沒有關係.對於類的靜態資料成員,const 預設是不內聯的,而constexpr預設是內聯的.

constexpr變數仍然是const 

乙個constexpr變數仍然是const常型別

constexpr建構函式和字面型別

乙個合理的constexpr函式,應當至少對於某一組編譯期常量的 輸入,能得到編譯期常量的結果

為了全面支援編譯期計算,c++14 開始,很多標準類的建構函式和成員函式已經被標為 constexpr,以便在編譯期使用。當然,大部分的容器類,因為用到了動態記憶體分配,不能成為字面型別。下面這些不使用動態記憶體分配的字面型別則可以在常量表示式中使用:

array

initializer_list

pair

tuple

string_view

optional

variant

bitset

complex

chrono::duration

chrono::time_point

shared_ptr(僅限預設構造和空指標構造)

unique_ptr(僅限預設構造和空指標構造)

常量,顧名思義是乙個常態的量值

第二節 常量 常量,顧名思義是乙個常態的量值。它與值只繫結一次,它的作用在於有肋於增加程式的可讀性和可靠性。在php中,常量的名字是乙個簡單值的識別符號,在指令碼執行期間該值不能改變。和變數一樣,常量預設為大小寫敏感,但是按照我們的習慣常量識別符號總是大寫的。常量名和其它任何 php 標籤遵循同樣的...

你不必去乙個遙遠的星系去尋找這些奇怪的世界

自大約46億年前形成以來,我們的星球經歷了許多變化。地球曾經是岩漿海洋,全球海洋和廣闊的全球冰原的故鄉。聽起來隱約熟悉?我們也這樣認為。事實證明,地球上最難忘的時刻正好反映了喬治 盧卡斯 george lucas 為他的 星球大戰 star wars 宇宙創造的神秘而神奇的境界。1 mustafar...

乙個乙個的輸入資料

有兩個需要注意的點 1.while中的內容 whlie ch getchar 0 ch eof 注意這兩個書寫的形式是不一樣的 2.while中就不用再寫getchar了,因為while中本身就有ch getchar 輸入描述 一行,字串行,包含a或b,輸入以字元0結束。輸出描述 一行,乙個字元,a...