Constexpr 函數與常數:何時使用Which
當遇到總是傳回相同值的函數時,例如「return 5, “人們可能想知道為什麼C 11中存在這樣的功能以及它是否應該取代聲明常量
常量與Constexpr 函數
考慮以下處理常量值的示例:
#define MEANING_OF_LIFE 42 const int MeaningOfLife = 42; constexpr int MeaningOfLife() { return 42; }
傳統上,人們只需聲明一個常數值。但是,constexpr 函數具有某些優勢。
Constexpr 函數何時有用
當回傳值需要更複雜的計算時,Constexpr 函數很有價值,例如:
constexpr int MeaningOfLife(int a, int b) { return a * b; } const int meaningOfLife = MeaningOfLife(6, 7);
這允許更多可讀的程式碼,同時仍然有利於編譯時評估。
編譯時計算
Constexpr 函數啟用常數的明確編譯時計算,如下所示:
template<typename Type> constexpr Type max(Type a, Type b) { return a < b ? b : a; }
這允許用於有效處理常量值。
增加可讀性
對於DegreesToRadians 這樣的函數,使用constexpr 函數可以增強可讀性,讓編譯時計算值變得更加清晰:
const float oneeighty = DegreesToRadians(180.0f);
結論
雖然聲明常數仍然是一種有價值的實踐,但 constexpr 函數在以下情況下具有優勢:使用更複雜或可讀的常數值。它們有助於編譯時評估並增強程式碼的可維護性。有關這些主題的更多信息,請參閱 http://en.cppreference.com/w/cpp/language/constexpr。
以上是Constexpr 函數或常數:什麼時候應該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!