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

北海购物网站开发设计做网站开发的想接私活

北海购物网站开发设计,做网站开发的想接私活,软件开发外包哪个公司的好,网站备案 icp备案类型转换和RTTI 类型转换类与类之间的类型转换四种显示类型转换类型转换注意事项RTTI 类型转换 在 C 中,operator int() 是用户定义的类型转换运算符(User-Defined Conversion Operator),允许自定义对象隐式或显式转换为特定类型…

类型转换和RTTI

  • 类型转换
  • 类与类之间的类型转换
  • 四种显示类型转换
  • 类型转换注意事项
  • RTTI

类型转换

在 C++ 中,operator int() 是用户定义的类型转换运算符(User-Defined Conversion Operator),允许自定义对象隐式或显式转换为特定类型。除了 operator int(),你还可以定义其他类型的转换运算符,包括常见的内置类型整形和浮点数,或者指针,或者其他自定义对象

类与类之间的类型转换

//#include"List.h"
//int main()
//{
//	bit::list<int> lt = { 1,2,3,4 };
//	// 权限缩小?权限缩小和放大,仅限于const的指针和引用
//	// 这里不是权限缩小,这里是自定义类型=自定义类型之间的类型转换,重载构造函数或者类型转换
//	// 因为const_iterator是两个不同的类,重载构造函数实现
//	// 具体实现看下面ListIterator中对应的构造函数的实现
//	bit::list<int>::const_iterator cit = lt.begin();
//
//	while (cit != lt.end())
//	{
//		cout << *cit << " ";
//		++cit;
//	}
//	cout << endl;
//	return 0;
//}

类转换其他类有两种方式
重载类型转换
operator otherclass()
{};

想转换的构造函数支持该参数类型
otherclass(myclass )
{}

// iterator
//struct ListIterator<T, T&, T*>
//{
//	typedef ListNode<T> Node;
//	typedef ListIterator<T, Ref, Ptr> Self;
//	Node* _node;
//	ListIterator(Node* node)
//		:_node(node)
//	{}
//
//	ListIterator(const ListIterator<T, T&, T*>& it)
//		:_node(it._node)
//	{}
//};
//
 const_iterator
//struct ListIterator<T, const T&, const T*>
//{
//	typedef ListNode<T> Node;
//	typedef ListIterator<T, Ref, Ptr> Self;
//	Node* _node;
//	ListIterator(Node* node)
//		:_node(node)
//	{}
//
//	ListIterator(const ListIterator<T, T&, T*>& it)
//		:_node(it._node)
//	{}
//};

四种显示类型转换

  1. static_cast

​用途​:编译时已知类型关系的安全转换。
​典型场景​:

基础类型之间的显式转换(如 int→double)。
父子类指针/引用的上行转换​(子类→父类)。
​无继承关系的自定义类型转换​(需定义转换构造函数或 operator)。

  1. dynamic_cast

​用途​:运行时多态类型的安全下行转换​(父类→子类)。
​条件​:

操作数必须为多态类型​(类有虚函数)。
必须启用 RTTI(运行时类型信息)。

  1. const_cast

​用途​:修改 const 或 volatile 属性。
​典型场景​:

调用遗留 API 时去除 const(如 char* 参数需要修改)。
强制修改本应为非 const 的变量(需确保逻辑安全)。

  1. reinterpret_cast

​用途​:低级别指针类型转换或指针与整数间的转换。
​典型场景​:

指针与整数之间的互转(如内存地址操作)。
不相关指针类型之间的强制转换(如 int→char)。

类型转换注意事项

C++不是类型安全的语言,一方面用户写的自定义转换符默认支持隐式类型转换如果说考虑不全面可能会在不想要类型转换的时候隐式类型转换了(最好用explicit修饰),其次四种显示类型转换会绕过编译器检查

RTTI

RTTI是通过多态和typid来保证的,只有在多态基类必须具有虚函数表且对象必须是指向基类的指针和引用才能保证。

dynamic_cast<>支持基类向子类的显示类型转换,只有基类本身是指向子类对象的指针和引用才成立,否则会抛异常

http://www.dtcms.com/wzjs/833800.html

相关文章:

  • 室内设计网站资源过期的网站域名
  • 个人如何制作一个网站如何设计旅游网站的域名
  • 淘宝代做网站设计网站界面
  • 网站的彩色标签怎么做的设计网站免费大全
  • 网站建设要学哪些软件有哪些方面百度站长工具官网
  • 做网站前端需要懂得浏览器网页版入口
  • 汽车网站建设策划方案班级网站开发
  • 台州建站平台海南营业执照网上怎么申请
  • 邢台做网站名列前茅网站打不开原因检测
  • 佛山公益网站制作中国公司排名500强名单
  • 免费h5模板网站黄骅港股票代码
  • 公司企业建站报价异地备案 网站
  • 清新大气企业公司网站源码做企业网站要注意什么
  • 土地流转网站建设项目电脑软件商店
  • php网站 mysql数据库配置文件wordpress添加广告
  • 动漫制作专业升本专业的网站优化公司
  • 甘肃购物网站建设wordpress后台没有写权限
  • 宏福建设集团有限公司网站推广app有哪些
  • 做网站和seo哪个好南京一等一网站建设
  • 网站建设平台案例人事管理软件
  • 谷歌官方网站首页免费客源软件
  • 电子商务实训网站建设建立知识体系
  • 网站上不去原因抖音开放平台是干嘛的
  • 做食品研发都有哪些网站点开图片跳到网站怎么做的
  • pc网站 手机网站 微信公众平台wordpress 翻墙
  • 秦皇岛网站推广网页设计旅游模板
  • 鞍山网站制作推广张家口建设网站
  • 只要有足够的粉丝网站seo去哪个网站找好
  • 重庆知名网络公司东莞关键词优化免费诊断
  • 无锡网站建设服务wordpress文章引入代码