Tôi có chức năng khá đơn giản này, tôi có một số giá trị cần được tính toán nhưng chỉ một lần và thời gian tốt nhất là lúc biên dịch. Những giá trị này chỉ quan trọng trong hàm này. Đây có phải là một sử dụng tốt của constexpr hay tôi chỉ cần khai báo chúng const tĩnh?Tôi có nên sử dụng constexpr như thế này không?
ps Tôi biết rằng sự khác biệt hiệu suất là quá ít để không quan trọng, nhưng tôi muốn làm điều đó "Quyền" C++ 11 cách.
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' ngụ ý' const'. – Xeo
'const int' là đủ cho mọi, nhưng' constexpr int' có thể rõ ràng hơn. Xin vui lòng không trộn hai. – ipc
Không phải là một const int tạo ra và bị phá hủy mỗi khi chức năng được gọi là, và do đó các tính toán phải được thực hiện là tốt? Tôi biết nó có thể được tối ưu hóa, nhưng tôi muốn đúng nó để mã nói chính xác những gì tôi đang ngụ ý. – EddieV223