首页 > 编程语言 >C++的四种强制转换

C++的四种强制转换

时间:2022-12-16 22:55:05浏览次数:43  
标签:转换 type C++ cast 强制 expression id 四种 指针

reinterpret_cast

使用形式:reinterpret_cast<type-id>(expression)

type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以用于类型之间进行强制转换(不可移植,依赖底层实现)。

const_cast

使用形式:const_cast<type-id>(expression)

该运算符用来修改类型的const或volatile属性。除了const 或volatile的修饰之外, type_id和expression的类型是一样的,即:

(1)将常量指针转化成非常量的指针,并且仍然指向原来的对象;

(2)将常量引用转换成非常量的引用,并且仍然指向原来的对象;

(3)const_cast一般用于修改底指针。如const char *p形式。

static_cast

使用形式:static_cast < type-id > (expression)

该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:

(1)用于类层次结构中基类(父类)和派生类(子类)之间指针或引用引用的转换(上行转换安全,下行转换不安全);

(2)用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证;

(3)把空指针转换成目标类型的空指针;

(4)把任何类型的表达式转换成void类型。

dynamic_cast

使用方法:dynamic_cast < type-id > (expression)

有类型检查,派生类向基类转换dynamic_cast和static_cast的效果是一样的,而基类向派生类转换会进行类型检查,比较安全。如果 type-id 是类指针类型,那么expression也必须是一个指针,如果 type-id 是一个引用,那么expression 也必须是一个引用。

标签:转换,type,C++,cast,强制,expression,id,四种,指针
From: https://www.cnblogs.com/mshentaiBlog/p/16988456.html

相关文章

  • C/C++大数据行程码识别系统
    C/C++大数据行程码识别系统大数据行程码识别系统一、编程题(60分)大数据行程码是疫情防控的主要手段,请用C语言设计简单的大数据行程码识别系统具体功能描述:1、建......
  • k倍区间【第八届蓝桥杯省赛C++B组,第八届蓝桥杯省赛JAVAB组】
    k倍区间给定一个长度为\(N\)的数列,\(A1,A2,…AN\),如果其中一段连续的子序列\(Ai,Ai+1,…Aj\)之和是\(K\)的倍数,我们就称这个区间\([i,j]\)是\(K\)倍区间。你能......
  • [c++实践]02-异常处理
    总结:在c++编程中,不建议使用异常。因为c++标准没有定义异常的实现方式,并且异常也不可以跨线程。构造函数异常构造函数可以抛出异常,此时对象还没有完全构造完成,对象的生命周期......
  • C++函数基础篇解析
    ......
  • 用pageOffice控件实现 office word文档 强制留痕编辑Word
    OA办公中,业务需要多人编辑word文档,需要强制留痕功能,用来查看文档编辑过程中的具体修改痕迹。怎么实现word文档的强制留痕呢?2实现方法通过pageOffice实现简单的在线打开......
  • C++小型公司人员信息管理系统(多态)
    C++小型公司人员信息管理系统(多态)1.实验题目及要求已有应用为:某公司包含多种员工类型:技术员,产品经理,销售员、销售经理。技术员(包含工号(6位:000001999999)、姓名、电话......
  • C++_基于例子进行学习
    1.C++examplelearningfirstexample--》1.include#include指令:头文件包含指令。预处理阶段,#include会将头文件拷贝到本文件内进行运行<string.h>是旧的C头文件,对......
  • 四平方和【第七届蓝桥杯省赛C++A/B组,第七届蓝桥杯省赛JAVAB/C组】
    四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:\(5=0^2+0^2+1^2......
  • 如何用C++做文件和流
    ......
  • C++函数返回两个或多个返回值的方法
    本文介绍C++语言中,一个函数返回两个及以上、同类型或不同类型的返回值的方法。对于C++而言,其不能像Python等语言一样在一个函数中返回多个值;但是我们也会经常遇到需要返回......