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

C++里面四种强制类型转换

static_cast, const_cast, reinterpret_cast, dynamic_cast

static_cast:用于各种隐式转换,比如void*转ptr*

const_cast: 只能应用于指针引用,用来移除变量的const或volatile限定符;不要妄图去修改const,const_cast转化后的const仍然无法被修改

结论:可以改变const自定义类的成员变量,但是对于内置数据类型,却表现为未定义行为

dynamic_cast:安全的向下进行类型转换。只能用于含有虚函数的类,只能转指针或引用。

reinterpret_cast:允许将任何指针转换为任何其他指针类型,并不安全

1.C++能够直接实现隐式类型转换为什么还需要static_cast?

用于解决双隐式的情况,例如void*转ptr*

2.static_cast已经能解决类型转换的问题,那么为什么还需要reinterpret_cast?

对于无隐式的类型转换,static_cast已经不可用

3.const_cast脱常有什么作用?

void func (int& v){

}

const int a = 10;
func(a);//没有办法去传

因此将func改成
void func (const int& v){//本质上是对引用进行扩展
   v=100;//×,不能对v进行修改
}

但是出现了另一个问题,此时如果不想改func就需要const_cast
func(const_cast<int &>(a));


http://www.kler.cn/a/567961.html

相关文章:

  • ES如何打印DSL
  • Oracle 认证为有哪几个技术方向
  • Java基础语法练习34(抽象类-abstract)(抽象类最佳实践-模版设计模式)
  • 数据挖掘中特征发现与特征提取的数学原理
  • 十、Spring Boot:Spring Security(用户认证与授权深度解析)
  • Cherry Studio + 火山引擎 构建个人AI智能知识库
  • 智慧园区后勤单位消防安全管理:安全运营和安全巡检
  • Postgresql高可用之Pacemaker+Corosync
  • 【前端基础】Day 2 CSS层叠样式表
  • Spring Boot 中 @Repository 注解全析
  • 文件上传漏洞绕过WAF
  • 【docker好用系列】llama-factory环境配置
  • Qt中如果槽函数运行时间久,避免阻塞主线程的做法
  • GPT-4.5 怎么样?如何升级使用ChatGPTPlus/Pro? GPT-4.5设计目标是成为一款非推理型模型的巅峰之作
  • 【nextjs官方demo】Chapter 6连接数据库报错
  • 深入解析React性能优化三剑客:React.memo、useMemo与useCallback
  • Go语言学习笔记(七)——标准库
  • 从指数族到混合模型的全新视角
  • 面试问题——如何解决移动端1px 边框问题?
  • SpringBoot项目中读取resource目录下的文件(六种方法)