Mam tę całkiem prostą funkcję, mam pewne wartości, które należy obliczyć, ale tylko jeden raz i najlepszy czas byłby w czasie kompilacji. Te wartości mają znaczenie tylko w ramach tej funkcji. Czy to jest dobre wykorzystanie constexpr czy powinienem zadeklarować je jako statyczną const?Czy powinienem używać takiego constexpr?
ps Wiem, że różnica w wydajności jest tak mała, że nie ma znaczenia, ale chcę zrobić to w "prawidłowy" sposób 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));
}
'constexpr' oznacza" const ". – Xeo
'const int' jest wystarczające dla każdego, ale' constexpr int' może być bardziej jednoznaczne. Proszę nie mieszać dwóch. – ipc
Czy za każdym razem, gdy funkcja jest wywoływana, nie jest tworzona i niszczona stała, i dlatego też należy dokonać obliczeń? Wiem, że można go zoptymalizować, ale chcę to naprawić, aby kod dokładnie wskazywał na to, co sugeruję. – EddieV223