判断C++类是否是is-a关系
判断C++类之间是否有父子关系非常简单。使用如下方法即可:
#include <type_traits>
#include <iostream>
// bool isSameType = std::is_base_of<baseClass, drivedClass>::value;
// e.g
class CBase
{
};
class CDriverd : public CBase
{
};
std::cout << (std::is_base_of<CBase, CBase>::value ? "true": "false");
std::cout << (std::is_base_of<CBase, CDriverd>::value ? "true": "false");
std::cout << (std::is_base_of<CDriverd, CBase>::value ? "true": "false");
输出
true
true
false
注意
判断的是C++类的父子关系,并不是判断基本类型是否相同的工具
TRACE(std::is_base_of<int, int>::value ? "true": "false");
输出
false
判断对象关系是否为父子管则使用RTTI
baseType *base = dynamic_cast<baseType *> (&driverdObj);
bool isSameType = (base != 0);