T73 Added virtual final destructors in CMeasurementUnit derived classes.

This fixes the GCC warning "deleting polymorphic object with non-virtual destructor".
They are marked final so the virtual dispatch can be optimized out, because they don't need to be overridden.
This commit is contained in:
Mathew Sutcliffe
2017-05-06 02:08:56 +01:00
parent 07ec7e6bc1
commit fd649c0b5c

View File

@@ -68,6 +68,9 @@ namespace BlackMisc
//! Null constructor
CLengthUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CLengthUnit() final = default;
//! Default unit
static CLengthUnit defaultUnit() { return m(); }
@@ -178,6 +181,9 @@ namespace BlackMisc
//! Null constructor
CAngleUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CAngleUnit() final = default;
//! Default unit
static CAngleUnit defaultUnit() { return deg(); }
@@ -271,6 +277,9 @@ namespace BlackMisc
//! Null constructor
CFrequencyUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CFrequencyUnit() final = default;
//! Default unit
static CFrequencyUnit defaultUnit() { return Hz(); }
@@ -357,6 +366,9 @@ namespace BlackMisc
//! Null constructor
CMassUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CMassUnit() final = default;
//! Default unit
static CMassUnit defaultUnit() { return kg(); }
@@ -453,6 +465,9 @@ namespace BlackMisc
//! Null constructor
CPressureUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CPressureUnit() final = default;
//! Default unit
static CPressureUnit defaultUnit() { return hPa(); }
@@ -570,6 +585,9 @@ namespace BlackMisc
//! Null constructor
CTemperatureUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CTemperatureUnit() final = default;
//! Default unit
static CTemperatureUnit defaultUnit() { return C(); }
@@ -650,6 +668,9 @@ namespace BlackMisc
//! Null constructor
CSpeedUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CSpeedUnit() final = default;
//! Default unit
static CSpeedUnit defaultUnit() { return m_s(); }
@@ -754,6 +775,9 @@ namespace BlackMisc
//! Null constructor
CTimeUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CTimeUnit() final = default;
//! Default unit
static CTimeUnit defaultUnit() { return s(); }
@@ -879,6 +903,9 @@ namespace BlackMisc
//! Null constructor
CAccelerationUnit(std::nullptr_t) : CMeasurementUnit(nullUnit()) {}
//! Destructor
virtual ~CAccelerationUnit() final = default;
//! Default unit
static CAccelerationUnit defaultUnit() { return m_s2(); }