国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

常量

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

常量的評論 (共 條)

分享到微博請遵守國家法律
关岭| 博野县| 云浮市| 佛山市| 石屏县| 阜新| 绵竹市| 开封县| 浏阳市| 施秉县| 会东县| 周至县| 白玉县| 呈贡县| 乌拉特中旗| 三门县| 彝良县| 台东市| 荃湾区| 墨玉县| 宜兰县| 宕昌县| 儋州市| 新泰市| 南京市| 无为县| 甘南县| 高雄县| 米易县| 淮滨县| 闸北区| 永宁县| 龙山县| 海门市| 青海省| 潢川县| 奉贤区| 饶阳县| 吉木萨尔县| 神池县| 荣成市|