我有这个非常简单的函数,我有一些值需要计算但只计算一次,最好的时间是在编译时。这些值仅在此函数中很重要。这是对 constexpr 的一个很好的使用,还是我应该将它们声明为静态 const?
ps 我知道性能差异微乎其微,但我想以“正确的”c++11 方式来做。
void MainWindow::UpdateDateTimes()
{
// for some dumb reason DateTime only has add seconds method
// so we have to calculate the seconds per hour and the number of hours
// we do this with static constant values so that the calculations
// only happen once.
static constexpr const int secsPerHour = 60 * 60;
static constexpr const int cdtOffsetHours = -5;
static constexpr const int edtOffsetHours = -4;
static constexpr const int cetOffsetHours = 2;
static constexpr const int cdtOffsetSecs = secsPerHour * cdtOffsetHours;
static constexpr const int edtOffsetSecs = secsPerHour * edtOffsetHours;
static constexpr const int cetOffsetSecs = secsPerHour * cetOffsetHours;
QDateTime time( QDateTime::currentDateTimeUtc() );
ui->mTimeLocal->setDateTime( time.toLocalTime() );
ui->mTimeCDT->setDateTime( time.addSecs( cdtOffsetSecs ) );
ui->mTimeEDT->setDateTime( time.addSecs( edtOffsetSecs ) );
ui->mTimeCET->setDateTime( time.addSecs( cetOffsetSecs ) );
}