weak-vtables

About clang’s -Wweak-vtables warning

The full warning message looks like this:

warning: ‘XXX’ has no out-of-line virtual method definitions; its vtable
will be emitted in every translation unit [-Wweak-vtables]

This warning usually comes from code like:

// XXX.h中
class BaseData
{
public:
    virtual ~BaseData() = default;
    int _base_data = 0;
};

class DerivedDataA final : public BaseData
{
public:
    int _derived_data_a = 0;
};

class DerivedDataB final : public BaseData
{
public:
    int _derived_data_b = 0;
};
Continue reading…