我正在编写一个模拟程序,想知道在存储中间结果时使用const double是否有用。考虑以下代码片段:
double DoSomeCalculation(const AcModel &model) {
(...)
const double V = model.GetVelocity();
const double m = model.GetMass();
const double cos_gamma = cos(model.GetFlightPathAngleRad());
(...)
return m*V*cos_gamma*Chi_dot;
}
请注意,示例仅用于说明--从工程角度来看可能没有太多意义。将cos_gamma等存储在变量中的动机是因为这个余弦在(...)覆盖的其他表达式中使用了很多次,我觉得使用时代码更加易读。
cos_gamma
而不是
cos(model.GetFlightPathAngleRad())
在各种表达式中使用cosine。现在实际的问题是:由于我期望余弦在整个代码段中都是相同的,而且我仅将其创建为占位符和便利性,我倾向于声明它为const。关于这是否是好还是坏的惯例,或者这最终会不会影响我,是否有一个已经确立的意见?编译器会利用这些额外的信息吗?还是我实际上阻碍了编译器执行有用的优化?