如何确定一个类是否没有派生自哪个类?

时间:2014-02-26 19:10:22

标签: c++ typetraits

如何判断某个类是否没有派生类?任何类型特征方法都有帮助吗?

我想写出一些数据。数据通过类似

的指针创建
unique_ptr<A> a(new A);

如果A类没有子类,我只写出数据内容。如果A有子类,我将首先写出它的具体类型,然后写入数据内容。在读取数据时,在阅读具体类型后,我知道使用什么具体类型来创建指针然后读取数据内容。因此,我认为我必须确定A是否具有子类?

2 个答案:

答案 0 :(得分:1)

这是不可能的,因为一个类不知道什么(如果存在)类派生自它。

你可以检查的是一个类来自另一个类:

struct foo {};

struct bar : foo {};

static_assert( std::is_base_of<foo,bar>::value );

答案 1 :(得分:1)

在C ++ 11中,您可以声明一个类 final 。这确保了没有类可以从中派生出来。请参阅http://en.cppreference.com/w/cpp/language/final