C++ - fragment

  1. 获取 class 的名称
  2. 判断 一个类 是不是 另外一个类 的子类

获取 class 的名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>

class AAAA
{
public:
void Test()
{
}
};

int main()
{
AAAA a;
const char* name = typeid(a).name();

std::cout << name << std::endl; // 输出结果 : class AAAA

// 这个方法不仅仅可以用于 class,还可以用于类方法
// 可以看出是那个类的方法
std::cout << typeid(&AAAA::Test).name() << std::endl; // 输出结果 :void (__thiscall AAAA::*)(void)

return 0;
}

判断 一个类 是不是 另外一个类 的子类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<type_traits>
#include<iostream>

class BaseClass
{};

class SubClass : public BaseClass
{};

int main()
{
bool flag = std::is_base_of<BaseClass, SubClass>::value; // true
bool flag1 = std::is_base_of<SubClass, BaseClass>::value; // false
std::cout << flag << std::endl;
std::cout << flag1 << std::endl;
return 0;
}

欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinhan_shu@163.com

文章标题:C++ - fragment

本文作者:QinHan

发布时间:2020-01-14, 18:47:44

最后更新:2020-02-20, 05:42:12

原始链接:https://qinhan.site/2020/01/14/cpp-fragment/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏