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

网页制作与网站建设实战大全 豆瓣php网站开发环境

网页制作与网站建设实战大全 豆瓣,php网站开发环境,高级网页设计教程,搭建一个网站要多久一、静态类型转换#xff08;static_cast#xff09; 静态类型的转换主要用于基本类型之间的转换#xff0c;比如int类型转换为double类型。但是static_cast也可以支持上下行的转换#xff08;存在继承关系之间的转换#xff09; 基本类型之间的转换举例 上下行转换的举…一、静态类型转换static_cast 静态类型的转换主要用于基本类型之间的转换比如int类型转换为double类型。但是static_cast也可以支持上下行的转换存在继承关系之间的转换 基本类型之间的转换举例 上下行转换的举例 #include iostream #includetypeinfo using namespace std;class A { public:int a1;int b2;int c3;};class B:public A { public:int d4;int e5;int f6; };int main() {//用指针实例化一个类对象A *ptr_anew A();B *ptr_bnew B();coutA的数据:ptr_a-aendlB的数据:ptr_b-dendl;//A指向B,B指向AA *ptr_a1static_castA *(new B());//上行转换(子类强行转换为父类)安全B *ptr_b1static_castB *(new A());//下行转换(父类强行转换为子类)不安全容易越界因为父类只能访问自己的coutA指针访问数据:ptr_a1-cendlB指针访问数据:ptr_b1-fendl;return 0; }从输出结果看下行转换是支持的输出了数据结合源代码可知26708不是我们想要输出的数据指针访问越界了A是基类只能访问自己的空间也证明了继承关系不具有双向性继承关系是单向的 二、动态类型转换dynamic_cast 动态类型的转换主要用来转换存在继承关系的指针或引用类型相比于静态类型转换static_cast动态类型转换会进行类型检查如果转换不安全会抛出异常错误信息 #include iostream #includetypeinfo using namespace std;class A { public:int a1;int b2;int c3;};class B:public A { public:int d4;int e5;int f6; };int main() {//用指针实例化一个类对象A *ptr_anew A();B *ptr_bnew B();coutA的数据:ptr_a-aendlB的数据:ptr_b-dendl;//A指向B,B指向AA *ptr_a1dynamic_castA *(new B());//上行转换(子类强行转换为父类)安全B *ptr_b1dynamic_castB *(new A());//下行转换(父类强行转换为子类)不安全容易越界因为父类只能访问自己的coutA指针访问数据:ptr_a1-cendlB指针访问数据:ptr_b1-fendl;return 0; }这段代码运行之后会报异常信息 D:\study\STL\class_cast\main.cpp:31: error: cannot dynamic_cast (operator new(12u), (statement, ((A*)anonymous))) (of type class A*) to type class B* (source type is not polymorphic)      B *ptr_b1dynamic_castB *(new A());//下行转换(父类强行转换为子类)不安全容易越界因为父类只能访问自己的                                         ^ 说明dynamic_cast只支持上行类型转换子类转换为父类。 三、常量类型转换const_cast 常量类型转换常用来去除指针或引用的常量性。对于指针或引用常量转换可以将其修改为非常量。例如 tips:通过指针b可以修改第三方的值 需要注意的是如果修饰某个变量为常量则不可更改数据但是未修饰的变量可以更改数据 #include iostream using namespace std;int main() {int c6;const int *ac;//const修饰的a为常量属性a不可被修改int *bconst_castint *(a);//类型转换后可以被修改cout*a *b cendl;*b9;cout*a *b cendl;int num666;const int *ptr_numconst_castconst int *(num);cout*ptr_num numendl;num999;cout*ptr_num numendl;return 0; }输出结果 四、重新解释转换reinterpret_cast 重新解释转换用于将一个指针转换为其他类型的指针该类型转换危险程度极高容易造成未定义的行为。 reinterpret_cast支持基本类型指针之间的转换 也支持上下行类型之间的转换包括不相关的类类型之间的转换 #include iostream using namespace std; class A { public:int a1;int b2;int c3;};class B:public A { public:int d4;int e5;int f6; };class C { public:int g7;int h8;int i9; };int main() {//用指针实例化一个类对象A *ptr_anew A();B *ptr_bnew B();C *ptr_cnew C();coutA的数据:ptr_a-aendlB的数据:ptr_b-dendlC的数据:ptr_c-gendl;;//A指向B,B指向A,C指向A,A指向C,B指向C,C指向BA *ptr_a1reinterpret_castA *(new B());B *ptr_b1reinterpret_castB *(new A());C *ptr_c1reinterpret_castC *(new A());A *ptr_a2reinterpret_castA *(new C());B *ptr_b2reinterpret_castB *(new C());C *ptr_c2reinterpret_castC *(new B());coutA指针访问数据:ptr_a1-a ptr_a2-cendlB指针访问数据:ptr_b1-f ptr_b2-aendlC指针访问的数据:ptr_c1-g ptr_c2-iendl;return 0; }运行结果 ps:通过运行结果可知数据访问乱了 其他 上下行转换关系图 父类与子类关系可以理解为基类与派生类关系 其余类型转换方法 类型转换方法其实远不止四个比如自动类型转换系统会自动转换 规则占用内存字节数少的类型向占用内存字节数多的类型转换内存字节数可以用值域替代目的保证精度不降。 编写程序证明有符号类型自动转换为无符号类型最终输出结果为无符号类型 ps2强制类型转换 强制转换的类型被转换的表达式 编写程序自证类型发生了强制转换
http://www.zqtcl.cn/news/322428/

相关文章:

  • 竭诚网络网站建设开发杭州百度推广
  • 怎样购买起名软件自己做网站小程序制作收费
  • 制作企业网站欢迎界面素材cuntlove wordpress
  • 适合建设网站的国外服务器人工智能培训机构
  • 怎么套网站潜江资讯网招聘信息
  • 网站建设 微信公众号建设网站需要
  • 做房产经纪的那些网站可以进客网站关键词排名如何做
  • 网站建设实验总结百科wordpress 前台插件
  • 招聘网站建设销售成都 网站建设
  • 手机选择网站wordpress捐赠按钮
  • 网站建设上动漫制作教学
  • 怎么用cms做网站计算机网络技术专业
  • 建设部颁发的证书网站请问注册公司怎么注册
  • 网站开发php和c语言区别网站开发教程大全
  • 建设银行通控件网站谷歌推广
  • 我要建网站需要什么付费wordpress
  • 网站收录查询情况wordpress主题仿
  • 网站单页生成器c 网站开发需要学什么
  • 什么网站是免费的免费图片链接生成器
  • 网站建设伍金手指下拉9服务器多少钱
  • 手机网站大全网站收费网站推广
  • 华企立方做网站自己动手做导航网站
  • 如何建设教师网上授课网站重庆建设网站哪家专业
  • 企业网站页头背景图建设三轮摩托车官网
  • 直播网站创做上海idc机房托管
  • 受欢迎自适应网站建设地址c2c二手车交易平台
  • 做个平台网站怎么做房价查询
  • 自学网站建设最快要多久asp.net 手机网站开发
  • 淮安做网站找哪家公司verycloud wordpress
  • 无法连接到wordpress站点网站建设的 几点