如何判断某个类是否没有派生类?任何类型特征方法都有帮助吗?
我想写出一些数据。数据通过类似
的指针创建unique_ptr<A> a(new A);
如果A类没有子类,我只写出数据内容。如果A有子类,我将首先写出它的具体类型,然后写入数据内容。在读取数据时,在阅读具体类型后,我知道使用什么具体类型来创建指针然后读取数据内容。因此,我认为我必须确定A是否具有子类?
答案 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。