当前位置: 首页 > wzjs >正文

图片抗锯齿网站运用阿里云怎么做网站

图片抗锯齿网站,运用阿里云怎么做网站,网站开发公司员工叫什么名字,有用cc域名做网站的在 C 中,RTTI(Runtime Type Information,运行时类型信息)是一组允许程序在运行时获取对象类型信息的机制 。虽然C通过虚接口的方式提供了良好的抽象,但是对于一个复杂的系统,过于依赖抽象而忽略业务的复杂性…

在 C++ 中,RTTI(Runtime Type Information,运行时类型信息)是一组允许程序在运行时获取对象类型信息的机制 。虽然C++通过虚接口的方式提供了良好的抽象,但是对于一个复杂的系统,过于依赖抽象而忽略业务的复杂性,隐藏类的具体运行时信息,往往让业务变得不够灵活,或者大大增加虚接口的代价。

标准 C++ RTTI 的组成

typeid 运算符

可以通过typeid函数获取对象的实际类型信息。其返回值为std::type_info 对象,包含类型名称和对比功能。

Base* obj = new Derived();// 获取静态类型信息(编译时确定)
std::cout << typeid(*obj).name() << std::endl; // 输出 "Derived"(若启用 RTTI)// 类型对比
if (typeid(*obj) == typeid(Derived)) {// 实际类型为 Derived
}
dynamic_cast

C++提供的安全类型转换,安全地将基类指针/引用转为派生类指针/引用。但是要求基类必须有虚函数(即多态类型)。指针类型转换失败返回 nullptr,引用类型转换失败抛出 std::bad_cast

type_info

存储类型信息,提供 name()operator==。只能通过 typeid 获取其实例。

C++标准虽然提供了一些简单的RTTI功能,但是存在一些缺点

  • dynamic_cast的运行时类型检查可能影响性能(尤其深继承层次)。
  • type_info::name()返回的名称是编译器修饰后的(如 7Derived)。
  • dynamic_cast仅适用于有虚函数的类。
  • 无法添加自定义类型元数据(如版本号、作者等)

不过,用户可以选择启用或者禁用RTTI功能,如果禁用后,就无法使用上面提到的功能,并且值得强调的时,C++RTTI其实是有点违背C++的Zero over head的设计哲学,开启 RTTI 后,所有多态类会携带一个虚表指针 (vptr),指向包含 type_info 的虚表。即使开发者完全不使用 RTTI,这一内存开销仍然存在。type_info 对象和类型名称字符串会被编译进程序,增加可执行文件

自定义RTTI系统

针对标准 RTTI 的不足,开发者常实现自定义 RTTI 系统 , RTTI系统实现的原理也非常简单

  • 定义一个MetaClass用于表示类的元信息
  • 每个类使用一个静态的MetaClass存储该类形的信息
  • 实现一些常用的如类型名称,类型转换,类型实例化等接口

如下为手动实现的RTTI系统的一些关键组件

元类(MetaClass)

封装类的类型信息,包括类名、父类元类指针、对象构造函数。

关键方法

  • isKindOf:递归检查当前类是否继承自指定父类。
  • create:通过绑定的构造函数创建对象。
class MetaClass {
public:MetaClass(std::string name, const MetaClass* pParent, ObjectConstructor cons);bool isKindOf(const MetaClass* pParent) const; // 继承关系检查MetaObject* create(); // 创建对象
private:std::string m_name;const MetaClass* mp_parent;ObjectConstructor m_constructor;
};

模板元类(ConcretMeta)为具体类生成元类实例,自动注册到 MetaClassStore。这里使用单例的方式来获取类的MetaClass

template <class T>
class ConcretMeta : public MetaClass {
public:static const MetaClass* instance() {static ConcretMeta s_meta;MetaClassStore::instance()->insert(&s_meta);return &s_meta;}
private:ConcretMeta() : MetaClass(T::class_name(), ConcretMeta<T::BaseClass>::instance(), [] { return new T(); }) {}
};
对象基类(MetaObject)

所有需要有RTTI能力的类需要继承自MetaObject,该类定义了获取MetaClass的接口和其他类型转换接口。

class MetaObject
{
public:virtual ~MetaObject() = 0;virtual const MetaClass* meta() const = 0;  //called by instancestatic const MetaClass* staic_meta();  //called by classstatic MetaObject* meta_cast(MetaObject* pOther);static std::string class_name();bool isKindOf(const MetaClass* pMeta) const;public:MetaObject() = default;
};
RTTI定义宏系统
  • DECLARE_META_CLASS:声明元类接口。
  • DEFINE_META_CLASS:实现元类绑定和类型转换。
// 声明.h
class MyClass : public MetaObject {DECLARE_META_CLASS(MyClass, MetaObject);
};// 定义.cpp
DEFINE_META_CLASS(MyClass, MetaObject);

该 RTTI 系统通过模板和宏巧妙地将类型信息抽象为运行时对象,实现了类型创建、继承检查和简单反射功能。设计简洁且易于扩展,可作为复杂对象工厂或序列化系统的基础组件。


文章转载自:

http://CxkonJlW.mLcnh.cn
http://xw16lah8.mLcnh.cn
http://120WJ2Jl.mLcnh.cn
http://H6248yQo.mLcnh.cn
http://sr99uvfz.mLcnh.cn
http://YMOWliCp.mLcnh.cn
http://X7oKzV3Q.mLcnh.cn
http://BpOx7GAC.mLcnh.cn
http://dCQeFus2.mLcnh.cn
http://RrthePXY.mLcnh.cn
http://L9hKh43W.mLcnh.cn
http://goJu5276.mLcnh.cn
http://zwrSOTAi.mLcnh.cn
http://lu4JKpri.mLcnh.cn
http://W6RBORqv.mLcnh.cn
http://FB1DddUv.mLcnh.cn
http://53h5VIN5.mLcnh.cn
http://oRfEqozN.mLcnh.cn
http://FBW2a48I.mLcnh.cn
http://cCz1Xs8u.mLcnh.cn
http://7On9EqZr.mLcnh.cn
http://4MQXQGw0.mLcnh.cn
http://7qghtdUu.mLcnh.cn
http://Ossj5r4Q.mLcnh.cn
http://4D6YQXz4.mLcnh.cn
http://hIqqjwsQ.mLcnh.cn
http://0diiumv0.mLcnh.cn
http://owLwMvtI.mLcnh.cn
http://AsiXubM4.mLcnh.cn
http://z7b7ZCbE.mLcnh.cn
http://www.dtcms.com/wzjs/757426.html

相关文章:

  • 西安北郊做网站网页设计基础视频
  • 建网站的优势菡萏怡景装饰公司
  • 看一个网站是哪里做的网站建设网络营销
  • 网站手机版怎么做护肤品网站建设前的行业分析
  • 河南智能网站建设哪家好邢台123招聘信息网
  • 网站建设多久可以学会基于wordpress的英文小游戏站
  • 上海网站建设网站制食品推广方式有哪些
  • 大连做网站孙晓龙有没有专门做衣服的网站
  • 网站开发费计入什么会计科目做性的网站
  • 山东诚祥建设集团公司网站代码中可以做自己的网站吗
  • 网站开发的关系图和e-r图西班牙外贸网站
  • 哪个网站可以做一对一老师招标网中标公示
  • 高端手机网站案例商城网站怎么建设
  • 网站keyword如何排列建材采购网
  • 凡科做的手机网站可以导出来东莞专业做网站的公司有哪些
  • 湖州市住房和城乡建设局网站海南房地产最新消息
  • 亚马逊在电子商务网站建设企业如何加强互联网网站建设
  • 返利网 网站建设费用万网归一
  • 怎么更改网站栏目id网页设计与网站建设考试名词解释2019
  • 怎么利用公司网站开发客户企业信用信息查询系统
  • 怎样用dw做新闻发布网站网络基础培训
  • 学做网站根学ps有前途吗东莞企业制作网站
  • 社交类网站开发需求分析网站建设 成都
  • 建网站流程 知乎wordpress友情链接定时
  • 自己用dw做网站能加声音吗怎样为网站设计关键词
  • 哈尔滨市建设安全监察网站减肥产品网站模板
  • 遵义新蓝外国语学校网站建设wordpress获取当前子分类
  • 做本地化的返利网站怎么样中国合同网官网
  • 虚拟机wordpress建站怎么注册公司支付宝账号
  • 做装修网站做外贸外文网站怎么做好