五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網 會員登陸 & 注冊

常量

2023-07-17 23:48 作者:追逐彗星的尾巴  | 我要投稿

constexpr

constexpr聲明了一個可以在編譯時求值的常量表達式,用于變量、函數和構造函數。

I.constexpr關鍵字聲明的變量必須在編譯時就能得到一個常量的值。

II.constexpr指示函數可以在編譯時進行求值。這樣的函數只能包含可以在編譯時求值的表達式,并且它們的參數和返回值類型必須是字面類型。字面類型是指在編譯期間可以被完全求值的類型,包括算術類型、指針類型、枚舉類型以及由這些類型組成的數組、結構體和聯(lián)合體。調用constexpr函數時,如果參數是常量表達式,結果也將在編譯時求值。

Case

III.constexpr可以用于聲明構造函數,使得對象可以在編譯時進行構造。

Case

使用constexpr可以在編譯時進行更多的計算,從而提升性能和靈活性。然而,constexpr有一些限制,如不能包含非常量表達式的語句、不能使用動態(tài)內存分配等。

擴展

C++20開始,在constexpr上下文中可以使用std::stringstd::vector。

Case 1 :

Case 2 :

C++20開始,std::stringstd::vecotr具有限定的構造函數和析構函數,這是可在編譯時使用的前提。所以,分配給stringvector對象的內存,也必須在編譯時釋放。如果試圖在運行時使用constexpr函數返回的vectorstring對象,會得到在常量求值期間分配內存的錯誤。因為在編譯期間分配并釋放了vectorstring對象,所以它們在運行時不可用。如需在運行時使用它們,可以考慮用array或內置數組替換vector,用字符數組或string_view替換string。

此外,在運行時仍然可以使用vectorstring對象的適配constexpr的方法,比如size

constexpr和宏

I.constexpr是在編譯時求值的機制,它在編譯期間計算常量的值,并在運行時使用該值。而宏是在預處理階段進行簡單的文本替換。

II.constexpr在編譯時對常量進行類型檢查,確保常量的類型是正確的。它保留了C++的類型系統(tǒng),并提供了更好的類型安全性。而宏沒有類型信息,無法進行類型檢查,可能導致潛在的類型錯誤。

III.宏在預處理階段進行簡單的文本替換,這意味著它允許符號重定義。如果在多個地方使用相同的宏定義,后面的定義將覆蓋前面的定義。這可能導致不可預測的行為。而constexpr具有唯一定義,不會出現(xiàn)符號重定義的問題。

簡而言之,一般使用constexpr定義常量,而將宏定義主要用于其他的預處理任務。

常量的評論 (共 條)

分享到微博請遵守國家法律
兖州市| 洛南县| 竹山县| 安仁县| 曲松县| 沛县| 乳源| 日土县| 扎鲁特旗| 营山县| 谷城县| 昌吉市| 盘锦市| 波密县| 丰都县| 合川市| 镇原县| 开封县| 漳州市| 鄂州市| 农安县| 鹿泉市| 武冈市| 汉沽区| 东兰县| 秦皇岛市| 东乌| 札达县| 鹤壁市| 通渭县| 邯郸县| 花莲县| 雷山县| 兴隆县| 道真| 曲麻莱县| 自治县| 宁陕县| 兰坪| 东海县| 乐山市|