在我看来,拥有一个“总是返回 5 的函数”正在破坏或淡化“调用函数”的含义。必须有一个原因,或者需要这种能力,否则它不会出现在 C++11 中。为什么会在那里?
// preprocessor.
#define MEANING_OF_LIFE 42
// constants:
const int MeaningOfLife = 42;
// constexpr-function:
constexpr int MeaningOfLife () { return 42; }
在我看来,如果我编写了一个返回文字值的函数,并且我进行了代码审查,那么有人会告诉我,我应该声明一个常量值而不是写 return 5。
原文由 Warren P 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设它做了一些更复杂的事情。
现在,您可以将某些东西评估为常数,同时保持良好的可读性,并允许比仅将常数设置为数字稍微复杂一些的处理。
它基本上为可维护性提供了很好的帮助,因为它变得更加明显你在做什么。以
max( a, b )
为例:这是一个非常简单的选择,但这确实意味着如果您调用
max
具有常量值,它会在编译时而不是在运行时显式计算。另一个很好的例子是
DegreesToRadians
函数。每个人都发现度数比弧度更容易阅读。虽然您可能知道 180 度是 3.14159265 (Pi) 的弧度,但更清晰的写法如下:这里有很多好信息:
http://en.cppreference.com/w/cpp/language/constexpr