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

网站安全建设目的sae做的网站备份

网站安全建设目的,sae做的网站备份,深圳电子商务网站建设,网络架构的基本特征是什么文章目录前言一、C语言中的类型转换二、为什么C需要四种转换三、C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast四、RTTI总结前言 在C语言的类型转换有一个非常大的坑,有好多悄悄地转换,有时候把我们转换的就蒙了,因为C要兼容C语言,所以C就… 文章目录前言一、C语言中的类型转换二、为什么C需要四种转换三、C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast四、RTTI总结前言 在C语言的类型转换有一个非常大的坑,有好多悄悄地转换,有时候把我们转换的就蒙了,因为C要兼容C语言,所以C就勉为其难的接受了C语言的类型转换. C语言的类型转换有两种:1.隐式类型转换 2.显式类型转换 下面带大家逐步来分析! 正文开始! 一、C语言中的类型转换 在C语言中,如果赋值运算符左右两侧的类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换;隐式类型转换和显式类型转换. 隐式类型转换:编译器在编译阶段自动进行,能转就转,不能转就编译失败.显式类型转换:需要用户自己处理 举个栗子 //简单实现一下string中的insert接口 class mystring { public://....void insert(size_t pos, char ch){//...int end _size;while (end pos){//_str[end1] _str[end];cout end endl;--end;}//....} private:char* _str;size_t _size3;size_t _capacity6; }; int main() {mystring str;str.insert(0, a);return 0; }上述插入函数中当pos0不会出现问题,但是当pos0的时候就会出现死循环! 原因如下:整形提升(隐式类型转换),int类型的end,隐式类型转换为size_t类型,-1就是一个非常大的无符号整数,endpos就恒成立,出现了死循环. void Test() {int i 1;//隐式类型转换double d i;printf(%d,%.2f\n,i,d);int* p i;//显式的强制类型转换int address (int)p;printf(%x,%d\n,p,address);}缺陷:转换的可实现比较差,所有的转换形式都是以一种相同的方式书写,难以跟踪错误的转换. 二、为什么C需要四种转换 C风格的转换格式很简单,但是有不少缺点的: 隐式类型转换有些情况可能会出问题:比如数据精度丢失.显式类型转换将所有情况混合在一起,代码不够清晰 因此C提出了自己的类型转化风格. 注意:因为C要兼容C语言,所以C中还可以使用C语言的转化风格. 三、C强制类型转换 标准C为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符 static_cast,reinterpret_cast,const_cast,dynamic_cast. 3.1 static_cast static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用static_cast,但它不能用于两个不相关的类型进行转换 int main() {double d 12.34;int a static_castint(d);cout a endl;int* p a;//int x p; // error//int x static_castint(p); // errorreturn 0; }3.2 reinterpret_cast reinterpret_cast操作符通常为操作数的为模式提供较低层次的重新解释,用于将一种类型转换为另一种不同的类型. int main() {double d 12.34;int a static_castint(d);cout a endl;int* p a;int x reinterpret_castint(p); // errorcout x endl;return 0; }3.3 const_cast const_cast最常用的用途就是删除变量的const属性,方便复制. int main() {volatile const int a 2;int* p const_castint*(a);*p 3;return 0; }3.4 dynamic_cast dynamic_cast用于将一个父类对象的指针/引用转换为子类对象的指针或引用(动态转换). 向上转换:子类对象指针/引用-父类指针/引用(不需要转换,赋值兼容规则). 向下转换:父类对象指针/引用-子类指针/引用(用dynamic_cast转换是安全的.) 注意 dynamic_cast只能用于父类含有虚函数的类.dynamic_cast会先检查是否能转换成功,能成功则转换,不能返回0. //dynamic_cast 规范的向下转换,转换是安全的class A { public:virtual void f() {} };class B :public A {};// pa可能指向父类对象,也可能指向子类对象 // 如何区分pa是指向子类还是父类? void fun(A* pa) {B* ptr dynamic_castB*(pa);if (ptr){cout 转换成功 ptr endl;}else{cout 转换失败 ptr endl;} }int main() {A a;B b;fun(a);fun(b);return 0; } 注意 强制类型转换关闭或挂起了正常的类型检查,每次使用强制类型转换前,程序猿应该仔细考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作业域,以减少发生错误的机会.强烈建议:避免使用强制类型转换 四、RTTI RTTI: Run-time Type identification的简称,即:运行时类型识别. C通过以下方式来支持RTTI: typeid运算符dynamic_cast运算符decltype 总结 本章完!
http://www.dnsts.com.cn/news/122564.html

相关文章:

  • 宾馆网站建设升级访问页面跳转
  • 云南省建设厅网站怎么进不去建设工程包括什么工程
  • 做的网站打不开了进入网站后台代码
  • 网站设计报价表三亚住房和城乡建设厅网站
  • 西部数码网站管理助手3.0教程莱西做网站公司
  • 网站下载免费软件安装泉州网站设计
  • 深圳汽车网站建设微信小程序官网网址
  • 免费建网站 建站之星杭州网站建设手机版
  • 营销型企业网站建设ppt淘宝美工做倒计时图片网站
  • 网站首页布局的设计衡水做企业网站的公司
  • .net响应式网站模板什么平台可以做推广
  • 珠海正规网站制作合作著名的办公室设计案例
  • vps搭建网站需要空间网站权重对优化的作用
  • 济南网站建设公司排名做 英语试题的网站
  • 视频网站制作费用家装要去哪个公司装修
  • 网站建设内容模板烟台网站建设推广
  • 农特产品电商网站建设目标网页设计与编程
  • 手机网站趋势网站安全检测工具
  • 微信官网入口手机版seocui cn
  • 鹿泉微信网站建设设计网站项目描述
  • 网站开发团队成员创业平台网
  • html语言中文解释大全 | 网站建设 - 红黑联盟论坛酒店网站建设价格
  • 开发公司总经理岗位职责成都百度搜索排名优化
  • 那些cps网站做的比较好seo互联网营销培训
  • wordpress新闻站主题免费云电脑主机
  • 好的设计师网站有哪些培训学校如何做网站宣传
  • tk注册网站世界互联网巨头
  • 网站搬家后出错东莞微网站建设
  • 营销型网站的定义网站建设佰金手指科杰二
  • 网站打开速度多少时间网络广告营销有哪些