最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

常量

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定義常量,而將宏定義主要用于其他的預處理任務。

常量的評論 (共 條)

分享到微博請遵守國家法律
若尔盖县| 安龙县| 涿州市| 江都市| 平罗县| 新巴尔虎右旗| 遵义县| 十堰市| 仙居县| 青铜峡市| 巴林右旗| 阆中市| 花莲县| 合川市| 江永县| 东安县| 来凤县| 宜宾县| 静乐县| 康乐县| 子洲县| 正阳县| 呼图壁县| 凌海市| 焦作市| 湖南省| 堆龙德庆县| 砀山县| 昌乐县| 巴塘县| 河间市| 黄骅市| 都匀市| 肇庆市| 抚宁县| 常山县| 梁平县| 定襄县| 息烽县| 方山县| 红原县|