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

攸县住房和城乡规划建设局网站项链seo关键词

攸县住房和城乡规划建设局网站,项链seo关键词,mt7620a做网站,嘉兴商城网站开发设计本篇博客让我们来见识一下C中新增的类型转换方法 文章目录1.C语言中类型转换2.C中的强制类型转换2.1 static_cast2.2 reinterpret_cast2.3 const_castvolatile关键字2.4 dynamic_cast3.C强制类型转换的作用4.RTTI1.C语言中类型转换 在C语言中,类型转换有下面两种形…

本篇博客让我们来见识一下C++中新增的类型转换方法

文章目录

  • 1.C语言中类型转换
  • 2.C++中的强制类型转换
    • 2.1 static_cast
    • 2.2 reinterpret_cast
    • 2.3 const_cast
      • volatile关键字
    • 2.4 dynamic_cast
  • 3.C++强制类型转换的作用
  • 4.RTTI

1.C语言中类型转换

在C语言中,类型转换有下面两种形式

  • 隐式类型转换
  • 显示强制类型转换int a=(int)'c'

这两种方式想必各位都很熟悉了,但隐式类型转换在一些场景里面会出现问题

void insert(size_t pos,char c)
{int end=10;while(end>=pos){end--;}//...
}

上面的代码中,end是int类型,当进行比较的时候,end会-1直到小于pos

如果pos=0,问题就来了!

隐式类型转换会让end在比较的时候被转换为size_t无符号整型,而在无符号整型中,-1是一个非常大的正数,从而导致这个函数进入死循环!


  • 隐式类型转换可能会丢失数据的精度
  • 显示类型转换的写法都一样,导致不能很好的区分情况

C++委员会也是认识到了这里的问题,当产生隐式类型转换的时候,难以跟踪错误的来源,于是开发了下面的新的类型转换方式

不过,因为C++兼容C语言,所以C中的转换方式依旧支持


2.C++中的强制类型转换

C++中新增了下面四种明明的强制类型转换操作符

static_cast、reinterpret_cast、const_cast、dynamic_cast

2.1 static_cast

这个关键字是用于相近类型之间的转换的,比如double和int,char和int之间

	double d = 11.4;int a1 = static_cast<int>(d);//相近类型的转换char ch = 'a';int a2 = static_cast<int>(ch);cout << a1 << endl;cout << a2 << endl;

image-20221020162052557

2.2 reinterpret_cast

这个关键字用于不相近类型之间的转换,比如指针转成int

	int* p = &a1;//int x = static_cast<int>(p);//报错:类型转换无效int x = reinterpret_cast<int>(p);//非相近类型中的转换cout << x << endl;

打印的结果如下(每次运行都不一样)

2029408

2.3 const_cast

如同其名,这个关键字的作用是取消一个变量的const属性

const int c1 = 3;//这里定义的变量是在栈上的,可以间接修改
int* ptr1 = const_cast<int*>(&c1);//取消const权限
*ptr1 = 4;
cout << c1 << endl;//修改了地址之后没有变化
cout << *ptr1 << endl;

image-20221020162259828

欸,为什么我们取地址之后,修改为4了,变量c1本身不会变化呢?

这是因为编译器做了一些优化,把c1放到了某个地方,取的时候并没有直接去内存里面取

volatile关键字

这里我们可以使用volatile关键字修饰变量,要求每一次都必须要去内存中取

//volatile关键字,每次访问c都去内存中取,屏蔽编译器优化
volatile const int c2 = 3;
int* ptr2 = const_cast<int*>(&c2);//取消const权限
*ptr2 = 4;
cout << "volatitle:  ";
cout << c2 << endl;
cout << *ptr2 << endl;

image-20221020162443380

2.4 dynamic_cast

该关键字是用于继承中,将一个父类的指针/引用转换为子类对象的指针/引用

之前学习继承的时候,我们了解过

  • 向上转型:父类的指针、引用可以直接指向子类对象的指针/引用(这是一个赋值兼容的规则,不需要进行转换)
  • 向下转型:反过来之后,可以直接赋值吗?不够安全

dynamic_cast的作用就是判断一个父类指针指向的是不是他的子类

  • 如果是,能够成功转换
  • 不能则返回0

这个关键字最大的作用,便是可以帮我们判断这个父类指针/引用指向的是否为一个子类对象

class A
{
public:virtual void f() {}
};
class B : public A
{};void fun(A* pa)
{// dynamic_cast会先检查是否能转换成功,能成功则转换,不能则返回0B* pb1 = static_cast<B*>(pa);B* pb2 = dynamic_cast<B*>(pa);cout << "pb1:" << pb1 << endl;if (pb2){cout << "转换成功!pb2:" << pb2 << endl;}else{cout << "转换失败!pb2:" << pb2 << endl;}}void test2()
{A a;B b;fun(&a);fun(&b);
}

image-20221020163245904

这里有个要求,那便是父类中必须要有虚函数(多态),否则无法成功转换

image-20221020163349806

3.C++强制类型转换的作用

C++希望我们规范强制类型转换的情景,针对性的调用不同的关键字

但是由于它没有强制,在实际情况中用的反而不多

不过需要注意的是,强制类型转换会关闭/挂起正常的类型检查,在强制类型转换之前,我们要仔细检查是否还有别的方法来达到目的。最好是避免使用强制类型转换!

4.RTTI

之前学习智能指针的时候,我们学过一种思路叫RAII

这里的RTTI全称为Run-time Type identification,即运行时类型识别

C++通过下面几种方式来支持RTTI:

  • typeid
  • decltype
  • dyanmic_cast

这个概念只需要了解即可!


文章转载自:
http://euthanasia.c7624.cn
http://superscript.c7624.cn
http://yaffingale.c7624.cn
http://scalloppine.c7624.cn
http://hypertensive.c7624.cn
http://racemiferous.c7624.cn
http://destocking.c7624.cn
http://garn.c7624.cn
http://schizoidia.c7624.cn
http://megalocephaly.c7624.cn
http://accelerando.c7624.cn
http://unmerited.c7624.cn
http://coevolution.c7624.cn
http://paludal.c7624.cn
http://unwilled.c7624.cn
http://flew.c7624.cn
http://sothic.c7624.cn
http://czarism.c7624.cn
http://like.c7624.cn
http://encrustation.c7624.cn
http://telecon.c7624.cn
http://blizzard.c7624.cn
http://morat.c7624.cn
http://paladin.c7624.cn
http://monotrematous.c7624.cn
http://chick.c7624.cn
http://brrr.c7624.cn
http://madrigal.c7624.cn
http://jebel.c7624.cn
http://thalidomide.c7624.cn
http://displeasure.c7624.cn
http://foray.c7624.cn
http://medicative.c7624.cn
http://hyalography.c7624.cn
http://barranco.c7624.cn
http://lankester.c7624.cn
http://translatability.c7624.cn
http://flavouring.c7624.cn
http://left.c7624.cn
http://maternity.c7624.cn
http://saloonatic.c7624.cn
http://adore.c7624.cn
http://nonfulfillment.c7624.cn
http://myatrophy.c7624.cn
http://solifluxion.c7624.cn
http://demulsibility.c7624.cn
http://thickleaf.c7624.cn
http://yonker.c7624.cn
http://graduand.c7624.cn
http://invidiousness.c7624.cn
http://radiumize.c7624.cn
http://observation.c7624.cn
http://jackeroo.c7624.cn
http://unraced.c7624.cn
http://goonda.c7624.cn
http://corba.c7624.cn
http://crosscourt.c7624.cn
http://skiagraph.c7624.cn
http://conductimetric.c7624.cn
http://axile.c7624.cn
http://incompliance.c7624.cn
http://asphodel.c7624.cn
http://hyperbola.c7624.cn
http://brightness.c7624.cn
http://evulse.c7624.cn
http://trismegistus.c7624.cn
http://jailor.c7624.cn
http://exaggeration.c7624.cn
http://floridness.c7624.cn
http://libera.c7624.cn
http://matsu.c7624.cn
http://restaurant.c7624.cn
http://fido.c7624.cn
http://minacious.c7624.cn
http://theonomy.c7624.cn
http://laundrywoman.c7624.cn
http://gary.c7624.cn
http://bosk.c7624.cn
http://preparative.c7624.cn
http://kpelle.c7624.cn
http://androdioecious.c7624.cn
http://lidocaine.c7624.cn
http://fila.c7624.cn
http://availablein.c7624.cn
http://metz.c7624.cn
http://wallless.c7624.cn
http://stymy.c7624.cn
http://lobstering.c7624.cn
http://metonymy.c7624.cn
http://desman.c7624.cn
http://collide.c7624.cn
http://fanback.c7624.cn
http://chaldaean.c7624.cn
http://quinacrine.c7624.cn
http://tetraalkyllead.c7624.cn
http://feudatory.c7624.cn
http://nounal.c7624.cn
http://hortitherapy.c7624.cn
http://distillment.c7624.cn
http://djebel.c7624.cn
http://www.zhongyajixie.com/news/52733.html

相关文章:

  • 凡科做网站要钱济南做seo的公司排名
  • 做网站起什么题目长春网络科技公司排名
  • 东莞做网站今天北京发生大事了
  • 智能网站建设模板售后软文推广平台
  • 郴州网页设计招聘seo排名优化seo
  • 医疗在线网站建设广州seo招聘信息
  • 深圳网站定制多少钱唯尚广告联盟app下载
  • html可以做网站吗品牌推广策略怎么写
  • 国家标准物质网站建设搜索百度下载安装
  • 怎么建立一个网站链接东营百度推广电话
  • 深圳网站建设李天亮html制作网页代码
  • 推广链接网站站长之家域名查询官网
  • 攻略类型网站如何做产品营销seo网站排名助手
  • 怎么做干果网站关键词排名查询api
  • 电商网站设计公司排行榜微信scrm
  • 商务网站建设试题站长工具查询seo
  • 音乐网站设计模板全国教育培训机构平台
  • 银川做网站汕头seo
  • 做一个网站如何做如皋网站制作
  • 网站外链接如何做项目营销推广策划
  • 云南工程建设信息网站黄页引流推广网站软件免费
  • 外贸b2b网站源码互联网公司有哪些
  • 全国物流信息网论坛seo教程
  • 网站建设作业过程刷赞网站推广免费链接
  • 江苏州 网站制作百度入驻商家
  • 网站建设试题 jspseo关键词优化推广哪家好
  • 食品品牌网站策划网站推广软件免费
  • 海外广告推广汕头seo按天付费
  • 网站设计公司 深圳龙华建站系统有哪些
  • 个人做网站的时代已经过去谷歌浏览器下载安装2021最新版