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

网站栏目关键词做衬衣的网站

网站栏目关键词,做衬衣的网站,东莞设计网站推荐,app研发费用一般多少钱文章目录 1.传统的类型转换2.C强制类型转换2.1 static_cast2.2 reinterpret_cast2.3 const_cast2.4 dynamic_cast 3.RTTI希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 关于类型转换,通常是隐式转换或者强制转换,C 提供了…

文章目录

  • 1.传统的类型转换
  • 2.C++强制类型转换
    • 2.1 static_cast
    • 2.2 reinterpret_cast
    • 2.3 const_cast
    • 2.4 dynamic_cast
  • 3.RTTI
  • 希望读者们多多三连支持
  • 小编会继续更新
  • 你们的鼓励就是我前进的动力!

关于类型转换,通常是隐式转换或者强制转换,C++ 提供了一些能够显式表示转换的运算符,能够更好的规避一些风险和错误

1.传统的类型转换

C 语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化

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);
}

转换分为显式和隐式:

  1. 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败
  2. 显式类型转化:需要用户自己处理

然而这两种转换的前提是逻辑相近:

  • 基本类型间的转换(如 intdouble
  • 继承层级中的转换(如子类→父类、父类→子类)
  • 用户定义的转换(如 operator T() 或带参数的构造函数)
string s;
vector<int> = (vector<int>) s;

这种转换就会失败,因为逻辑不相近

对于强制转换还有一种特殊易错的场景

int main()
{const int n = 10;int* p = (int*) &n;(*p)++;string s;vector<int> = (vector<int>) s;cout << n << endl;cout << *p << endl;return 0;
}

无论是有点 C 语言基础的人,甚至是学完 C++ 的初学者,都很容易认为这里的输出结果是:n11*p11。但是结果并非所愿,输出结果:n10*p11

实际上这里涉及到存储规则的问题,因为 nconst 变量,那么会被识别为一个常变量,可能会是一个经常被使用的值,就把 n 存入寄存器,把频繁使用的变量的值暂存到寄存器中,这样在后续对该变量的读取操作中,就不需要每次都去内存中读取,直接从寄存器中获取即可,因为寄存器的读写速度比内存快很多

通常 cout 输出的值都是在内存里读取的,相比寄存器,内存读写速度较慢,但内存容量相对寄存器大很多,大多的代码都是存在这里的

因此这里输出的 n 是取自内存器,*p 取自内存

volatile const int n = 10;

volatile 关键字表示该变量的值可能会在程序未明确指定的情况下被改变,编译器不会对其进行优化,即不会被存入寄存器,这样取到的 n 就是内存中及时更新的值

C 风格的转换格式很简单,但是有不少缺点的:

  1. 隐式类型转化有些情况下可能会出问题:比如数据精度丢失
  2. 显式类型转换将所有情况混合在一起,代码不够清晰

因此 C++ 提出了自己的类型转化风格,注意因为 C++ 要兼容 C 语言,所以 C++ 中还可以使用 C 语言的转化风格

2.C++强制类型转换

2.1 static_cast

int main()
{double d = 12.34;int a = static_cast<int>(d);cout << a << endl;return 0;
}

static_cast 需要逻辑上的相近性

2.2 reinterpret_cast

int main()
{// 这里使用static_cast会报错,应该使用reinterpret_cast//int *p = static_cast<int*>(a);int* p = reinterpret_cast<int*>(a);return 0;
}

reinterpret_cast 几乎无类型限制,不要求类型相近,可强制转换任意指针或整数类型,但极其危险,可能导致:

  • 违反别名规则(如通过 char* 修改 int
  • 函数指针转换后调用,引发崩溃
  • 平台依赖(如不同架构的指针大小不同)

2.3 const_cast

void Test()
{volatile const int a = 2;int* p = const_cast<int*>(&a);*p = 3;cout << a << endl;
}

仅改变类型的 const / volatile 属性,这里用 reinterpret_cast 也不行的,因为 const 的转换是有风险的

2.4 dynamic_cast

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

dynamic_cast 用于将一个父类对象的指针/引用转换为子类对象的指针或引用(动态转换)

  • 向上转型: 子类对象指针/引用->父类指针/引用(不需要转换,赋值兼容规则)
  • 向下转型: 父类对象指针/引用->子类指针/引用(用 dynamic_cast 转型是安全的)

pa 是指向子类对象 B 的,转换可以成功,正常返回地址;pa 是指向父类对象 A 的,转换失败,返回空指针

🔥值得注意的是: 必须是继承关系中的类,基类必须包含虚函数

3.RTTI

RTTI: Run-time Type identification 的简称,即:运行时类型识别

C++ 通过以下方式来支持 RTTI

  1. typeid 运算符
  2. dynamic_cast 运算符
  3. decltype

希望读者们多多三连支持

小编会继续更新

你们的鼓励就是我前进的动力!

请添加图片描述


文章转载自:

http://xgLcV6LO.txysr.cn
http://vQ61VX1N.txysr.cn
http://hNrK2NlV.txysr.cn
http://s3KkPoFZ.txysr.cn
http://mfXRzcwi.txysr.cn
http://trmlVtX3.txysr.cn
http://bAASu9iP.txysr.cn
http://i7lINHO2.txysr.cn
http://GnswNG6t.txysr.cn
http://pDWloW7U.txysr.cn
http://mhhLMzNb.txysr.cn
http://Z713eXtt.txysr.cn
http://FOHQM29z.txysr.cn
http://Dw12JYuP.txysr.cn
http://81vYXyMg.txysr.cn
http://qsCJxB8q.txysr.cn
http://ZNxgVT5O.txysr.cn
http://a7IGFWi6.txysr.cn
http://BUKjJzMW.txysr.cn
http://Zk8ZD3nD.txysr.cn
http://LIFAA2rl.txysr.cn
http://tkFwytsI.txysr.cn
http://7wR8wUSg.txysr.cn
http://CogyTE8b.txysr.cn
http://y6T9x0NY.txysr.cn
http://0TPhZID3.txysr.cn
http://71dnDQwL.txysr.cn
http://Y9CpK2Yp.txysr.cn
http://BadN65Qk.txysr.cn
http://dibBX2SE.txysr.cn
http://www.dtcms.com/wzjs/657205.html

相关文章:

  • photoshop下载免费版企业seo顾问服务公司
  • 网站怎么推广和应用网站建设需要在哪备案
  • 营销型网站的特点东莞娱乐场所最新通知
  • 北京邢台企业商会网站山西建设厅网站首页
  • 做购物平台网站需要注意什么企业网厅
  • 化妆品网站方案站酷海洛设计网站官网
  • 做热点图现在用什么网站可以找网图的软件
  • 旅游网站制作视频百度云南通中小企业网站制作
  • wordpress名站中小型网站有哪些
  • 服装类电子商务网站建设报告公司官网怎么编辑
  • 做网站 信科网络建设工程个人信息采集哪个网站
  • 做网站跟推广哪家公司好app是什么意思通俗讲
  • 网站建设电销照片一键生成视频的软件
  • 营销型企业网站分析与诊断的步骤wordpress 多站点错误
  • 海南住房和城乡建设厅网站首页广州免费钓鱼地点50个
  • vps做网站的环境app系统开发费用
  • 网站没有域名永康建设局网站
  • 深圳便宜做网站织梦后台做的网站怎么绑定域名
  • 网站英文版是怎么做的好的h5制作网站模板
  • 网站建设托管公司苏宁易购网站建设的思路
  • vi设计基础部分都有哪些郑州seo团队
  • 广州网站推广公司哪个网站有做阿里巴巴流量
  • 漂亮的数据型网站备案信息在哪里查
  • 互联网网站制作公司哪家好万网域名指向网站
  • 高端网站建设公司大于二高端网站建设
  • 网站建设税收编码广州制作外贸网站公司简介
  • 宣讲家网站美丽乡村建设大连哪家公司做网站好
  • 旅游网站开发报价单怎样开发公司的网站建设
  • 做网站优化哪家好网架公司的螺丝是不是公司安好
  • 局域网建网站的详细步骤如何自建公司网站