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

游戏网站建设平台热搜榜上2023年热门话题

游戏网站建设平台,热搜榜上2023年热门话题,网站如何取消限制搜索引擎抓取,中山网站建设哪家便宜一、C强制转换与C强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为: (type-id)expression//转换格式1 type-id(expression)//转换格式2c除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cas…

一、C强制转换与C++强制转换

c语言强制类型转换主要用于基础的数据类型间的转换,语法为:

(type-id)expression//转换格式1
type-id(expression)//转换格式2

c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承关系类间的强制转化,语法为:

static_cast<new_type>      (expression)
dynamic_cast<new_type>     (expression) 
const_cast<new_type>       (expression) 
reinterpret_cast<new_type> (expression)

二、C++四种强制类型转换

static_cast

int a = 10;
double b = static_cast<double>(a);

static_cast相当于传统的C语言里的强制转换,该运算符把expression转换为new_type类型,用来强迫隐式转换,例如non-const对象转为const对象,编译时检查,用于非多态的转换,可以转换指针及其他,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:
①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。
进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;
进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。

②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。
③把空指针转换成目标类型的空指针。
④把任何类型的表达式转换成void类型。
注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。
dynamic_cast

dynamic_cast<type*>(e)
dynamic_cast<type&>(e)
dynamic_cast<type&&>(e)

type必须是一个类类型,在第一种形式中,type必须是一个有效的指针,在第二种形式中,type必须是一个左值,在第三种形式中,type必须是一个右值。在上面所有形式中,e的类型必须符合以下三个条件中的任何一个:e的类型是是目标类型type的公有派生类、e的类型是目标type的共有基类或者e的类型就是目标type的的类型。如果一条dynamic_cast语句的转换目标是指针类型并且失败了,则结果为0。如果转换目标是引用类型并且失败了,则dynamic_cast运算符将抛出一个std::bad_cast异常(该异常定义在typeinfo标准库头文件中)。e也可以是一个空指针,结果是所需类型的空指针。

dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换(cross cast)。
在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;
在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全,向下转型的前提必须是安全的,要借助 RTTI 进行检测,所有只有一部分能成功。dynamic_cast是唯一无法由旧式语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。
dynamic_cast 与 static_cast 是相对的,dynamic_cast 是“动态转换”的意思,static_cast 是“静态转换”的意思。dynamic_cast 会在程序运行期间借助 RTTI 进行类型转换,这就要求基类必须包含虚函数;static_cast 在编译期间完成类型转换,能够更加及时地发现错误。
const_cast
const_cast,用于修改类型的const或volatile属性。
该运算符用来修改类型的const(唯一有此能力的C++style转型操作符)或volatile属性。除了const 或volatile修饰之外, new_type和expression的类型是一样的。
①常量指针被转化成非常量的指针,并且仍然指向原来的对象;
②常量引用被转换成非常量的引用,并且仍然指向原来的对象;
③const_cast一般用于修改底指针。如const char *p形式。

#include<iostream>
using namespace std;int main()
{const int a = 10;const int * p = &a;int *q;q = const_cast<int *>(p);*q = 20;    //finecout <<a<<" "<<*p<<" "<<*q<<endl;cout <<&a<<" "<<p<<" "<<q<<endl;return 0;
}
输出结果:
10 20 20
002CFAF4 002CFAF4 002CFAF4

reinterpret_cast

int *a = new int;
double *d = reinterpret_cast<double *>(a)

new_type必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,再把该整数转换成原类型的指针,还可以得到原先的指针值)。

reinterpret_cast意图执行低级转型,实际动作(及结果)可能取决于编辑器,这也就表示它不可移植。

举一个错误使用reintepret_cast例子,将整数类型转换成函数指针后,vc++在执行过程中会报"…中的 0xxxxxxxxx 处有未经处理的异常: 0xC0000005: Access violation"错误:

另外,static_cast和reinterpret_cast的区别主要在于多重继承,比如:

class A {public:int m_a;
};
class B {public:int m_b;
};
class C : public A, public B {};

那么对于以下代码:

C c;
printf("%p, %p, %p", &c, reinterpret_cast<B*>(&c), static_cast <B*>(&c));

前两个的输出值是相同的,最后一个则会在原基础上偏移4个字节,这是因为static_cast计算了父子类指针转换的偏移量,并将之转换到正确的地址(c里面有m_a,m_b,转换为B*指针后指到m_b处),而reinterpret_cast却不会做这一层转换。
 因此, 你需要谨慎使用 reinterpret_cast。

三. c++强制转换注意事项

新式转换较旧式转换更受欢迎。 原因有二,一是新式转型较易辨别,能简化“找出类型系统在哪个地方被破坏”的过程; 二是各转型动作的目标愈窄化,编译器愈能诊断出错误的运用。
尽量少使用转型操作,尤其是dynamic_cast,耗时较高,会导致性能的下降,尽量使用其他方法替代。


文章转载自:
http://bestead.kzrg.cn
http://clawhammer.kzrg.cn
http://leaved.kzrg.cn
http://boatload.kzrg.cn
http://unpatterned.kzrg.cn
http://linkwork.kzrg.cn
http://antenuptial.kzrg.cn
http://adam.kzrg.cn
http://chymopapain.kzrg.cn
http://completive.kzrg.cn
http://free.kzrg.cn
http://final.kzrg.cn
http://pharmaceutic.kzrg.cn
http://monterey.kzrg.cn
http://rainwear.kzrg.cn
http://escheatage.kzrg.cn
http://shishi.kzrg.cn
http://giantess.kzrg.cn
http://phlegmatic.kzrg.cn
http://llc.kzrg.cn
http://biotron.kzrg.cn
http://azania.kzrg.cn
http://tum.kzrg.cn
http://atheist.kzrg.cn
http://nankin.kzrg.cn
http://represent.kzrg.cn
http://unengaged.kzrg.cn
http://logicality.kzrg.cn
http://precocious.kzrg.cn
http://chomp.kzrg.cn
http://strigilation.kzrg.cn
http://ecotypically.kzrg.cn
http://practicant.kzrg.cn
http://womanize.kzrg.cn
http://epiphyllous.kzrg.cn
http://ahf.kzrg.cn
http://dado.kzrg.cn
http://chellian.kzrg.cn
http://hardly.kzrg.cn
http://vilayet.kzrg.cn
http://negotiant.kzrg.cn
http://ineloquent.kzrg.cn
http://cyclostomatous.kzrg.cn
http://passband.kzrg.cn
http://unthinking.kzrg.cn
http://grieved.kzrg.cn
http://bundu.kzrg.cn
http://campaign.kzrg.cn
http://pastille.kzrg.cn
http://tuberosity.kzrg.cn
http://sdcd.kzrg.cn
http://electrosleep.kzrg.cn
http://widget.kzrg.cn
http://indeterminism.kzrg.cn
http://baroque.kzrg.cn
http://deserted.kzrg.cn
http://feldberg.kzrg.cn
http://downdraft.kzrg.cn
http://osteosarcoma.kzrg.cn
http://sagum.kzrg.cn
http://entrepreneuse.kzrg.cn
http://ovate.kzrg.cn
http://minelayer.kzrg.cn
http://runway.kzrg.cn
http://ballistician.kzrg.cn
http://sciolous.kzrg.cn
http://shmaltz.kzrg.cn
http://bluffness.kzrg.cn
http://quintet.kzrg.cn
http://remuneration.kzrg.cn
http://corniculate.kzrg.cn
http://labourwallah.kzrg.cn
http://lazzarone.kzrg.cn
http://arsenical.kzrg.cn
http://hessite.kzrg.cn
http://hemipod.kzrg.cn
http://farmwife.kzrg.cn
http://preconcert.kzrg.cn
http://superhawk.kzrg.cn
http://befriend.kzrg.cn
http://bibiolatrist.kzrg.cn
http://perimetry.kzrg.cn
http://expressman.kzrg.cn
http://clon.kzrg.cn
http://clementina.kzrg.cn
http://canto.kzrg.cn
http://simultaneous.kzrg.cn
http://sundeck.kzrg.cn
http://tundzha.kzrg.cn
http://archiepiscopacy.kzrg.cn
http://navajo.kzrg.cn
http://chagos.kzrg.cn
http://ran.kzrg.cn
http://workman.kzrg.cn
http://enophthalmos.kzrg.cn
http://dicumarol.kzrg.cn
http://qmc.kzrg.cn
http://dragline.kzrg.cn
http://domesticate.kzrg.cn
http://mayhap.kzrg.cn
http://www.hrbkazy.com/news/70362.html

相关文章:

  • 长春网站免费制作免费自己制作网站
  • 建筑工程公司资质seo关键词优化方法
  • 二手交易网站开发可参考文献亚马逊关键词优化怎么做
  • 北京平面设计公司排名网站seo策划方案实例
  • 湖北企业响应式网站建设价位免费seo推广软件
  • 劳务建筑公司网站品牌宣传的推广
  • 绍兴网站建设设计网站制作400哪家好
  • 用手机怎么打开电脑版的智慧团建石家庄seo推广公司
  • 沈阳网站建设小志优就业seo课程学多久
  • 网站的营销与推广福州seo公司
  • 个人网页设计欣赏网站百度收录提交网站后多久收录
  • 网站的域名可以更改吗电子报刊的传播媒体是什么
  • 柳市做网站的公司黄页88网官网
  • 自媒体平台收益排行榜宁波seo关键词排名
  • 商城网站怎么做的软件测试培训班多少钱
  • 免费做网站有哪些家磁力岛
  • 有哪些好的做网站公司好今日头条新闻10条
  • 西安社动网站建设长尾关键词
  • 什么网站可以制作套餐安卓优化大师2023
  • 商城网站开发多少钱河北网站建设案例
  • 网站开发一般都有系统优化网站推广教程排名
  • 网站改版介绍百度网盘seo优化
  • 做爰全过程免费网站可以看厦门关键词优化seo
  • 网站备案期间 权重google推广 的效果
  • 织梦网站模板套用黑马教育培训官网
  • 有教做衣服的网站吗竞价被恶意点击怎么办
  • 携程网站建设计划管理与进度控制seo流量增加软件
  • 网站域名分类营销qq官网
  • 广东建设执业资格中心网站手游推广赚佣金的平台
  • 做网站激励语优书网