使用const double作为中间结果

Arn*_*rne 4 c++ const

我正在编写一个模拟程序,并想知道在存储中间结果时是否使用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;
}
Run Code Online (Sandbox Code Playgroud)

请注意,样本仅用于说明 - 从工程方面来看,它可能没有多大意义.在变量中存储例如cos_gamma的动机是这个余弦在(...)覆盖的其他表达式中多次使用,我觉得代码在使用时更易读

cos_gamma 
Run Code Online (Sandbox Code Playgroud)

而不是

cos(model.GetFlightPathAngleRad())
Run Code Online (Sandbox Code Playgroud)

用各种表达方式.现在问题是这样的:因为我希望余弦在代码部分是相同的,我实际上只是作为占位符创建了东西,为了方便起见,我倾向于将它声明为const.是否有关于这是好还是坏的实际意见,或者它最终是否会咬我?编译器是否使用了这些附加信息,或者我是否真的阻碍了编译器执行有用的优化?

阿恩

Nav*_*een 6

我不确定优化部分,但我认为将其声明为好const.这是因为如果代码很大,那么如果某人错误地执行了某个操作cos_gamma = 1,则会出现编译器错误而不是运行时意外.