Bu oldukça basit bir işleve sahibim, hesaplanması gereken bazı değerlere sahibim ama sadece bir kez ve en iyi zaman derleme zamanında. Bu değerler sadece bu işlevde önemlidir. Bu, constexpr'in iyi bir kullanımı mıdır yoksa sadece static const mı yazmalıyım?Bu gibi constexpr kullanmalı mıyım?
ps Performans farkının çok önemli olmadığını biliyorum, ancak bunu "Doğru" C++ 11 yolu yapmak istiyorum.
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',' const' anlamına gelir. – Xeo
'const int' her biri için yeterlidir, ancak' constexpr int' daha açık olabilir. Lütfen ikisini karıştırmayın. – ipc
İşlev her çağrıldığında bir const int yaratılmamış ve yok edilmemiştir, bu nedenle hesaplamalar da yapılmalıdır? Bunun optimize edilebileceğini biliyorum, ancak doğru bir şekilde yapmak istiyorum, bu yüzden kod tam olarak ne ima ettiğimi söylüyor. – EddieV223