其他分享
首页 > 其他分享> > RTTI和对象转型

RTTI和对象转型

作者:互联网

这是我学习基于Linux C++做的笔记!

运行期型式信息RTTI

RTTI

对象转型模板

dynamic_cast:动态转型(类类型指针或引用的转型)

static_cast:静态转型

reinterpret_cast:复诠转型

const_cast:常亮转型

type_info类

  1. 编译器实现的动态形式信息类型;
  2. 用于在程序运行时保存数据对象的形式信息;
  3. 不能直接使用该类,只能通过typeid操作符;
  4. 调用成员函数name(),可以获得类的名称;

typeid操作符

#include<typeinfo>
Programmer p;//类
Employee &e=p;//类
cout<<typeid(e).name()<<endl;//输出p实际类名的字符串 “Programmer”

dynamic_cast三种方式

指针的动态转型

引用的动态转型

static_cast

static_cast的问题

const_cast

const_cast的问题

class ConstCastTest{
public:
    void PrintNum() const;
private:
    int _num;
}

void ConstCastTest::PrintNum() const{//传进来常量指针this,指向当前类对象
    //临时将指向常量对象指针转换为非常量
    const_cast<ConstCastTest*>(this)->num--;
    cout<<_num<<endl;
}

reinterpret_cast

reinterpret_cast的问题

标签:const,对象,型式,转型,cast,RTTI,指针
来源: https://blog.csdn.net/weixin_40407112/article/details/112641276