首页 > 编程语言 >C++ 关键字四种cast类型转换

C++ 关键字四种cast类型转换

时间:2022-10-06 11:48:12浏览次数:49  
标签:类型转换 转换 C++ cast static 基类 类型 指针

1.23 四种cast类型转换
​ 作用:克服c中强制类型转化带来的风险,C++引入四种更加安全的强制类型转换运算符(明确转换的目 的,偏于程序的维护和分析)

const_cast:
// 1.去除const属性,将只读变为只读写
// 2.针对常量指针、常量引用和常量对象
const char *p;
char *p1 = const_cast<char*>(p);

​ 2. static_cast

// 1.内置数据类型之间的转换,int转double,char转int
// 2.基类指针与派生类之间的转换,只能转换有继承或派生关系的类。用于类层次结构之间基类和派生类指针和引用之间的转换,进行向上转型是安全的,但是进行向下转型是不安全的,但是是可以转换的;向上转型:我们知道基类的引用和指针都可以指向派生类的对象,那么将派生类的指针或者引用强转为基类的指针或者引用,那么这就是向上转型,也就是向父类转;向下转型:向下转型就和向上转型相反,它是将父类的指针或者引用,强制转换为子类的指针或者引用
// 3.把void类型指针转换为目标类型的指针
// 4.任何类型的表达式转化为void类型

// 整形转浮点型
int a = 10;
double b = static_cast<double>a;

//基类指针转派生类
class A{}; class B : public A{};

A *pA = new A;

B *pB = static_cast<B*>(pA);

reinterpret_cast

可以将一个类型的指针转换为其它任意类型的指针,也可以用在指针和整形数据之间的转换它是很危险的,如果我们没有使用它的充分理由,那么就不要使用它

为运算对象的位模式提供较低层次上的重新解释

用于底层的强制转换,依赖于机器,一般使用较少

dynamic_cast

dynamic_cast是运行时处理的,运行时进行类型检查,其他三种是编译时处理的
不能用于内置数据类型之间的转换
dynamic_cast在进行上行转换时和static_cast效果是一样的,但是进行下行转换时会进行类型检查,比static_cast更加安全,下行转换是否成功取决于转换对象的实际类型与目标类型是否相同
要求基类必须具有虚函数,否则编译不通过
若转换成功,返回的是指向目标的指针或引用,不成功返回NULL

标签:类型转换,转换,C++,cast,static,基类,类型,指针
From: https://www.cnblogs.com/qiujunxian/p/16757291.html

相关文章

  • C++ 和 Python 的赋值操作 (等号“=“) 的区别
    C++和Python的赋值操作("=")的区别C++的赋值操作总是默认执行拷贝拷贝出来的副本与原来变量的地址不同除非是指针拷贝给指针的浅拷贝才会指向相同地址autoa=b;改变......
  • python中的decimal类型转换实例详解
    1.Decimal类型的优点Decimal类型是在浮点类型的基础上设计的,但是它在几个地方上要优于floatingpoint:1)Decimal类型可以非常精确地在计算机中存储,而学过c++的都知道,浮点......
  • leetcode 6 Z字形变化 C/C++ 找规律解法 / 用容器的解法
    找规律,除了一行和两行需要特殊处理之外,其他的规律是一样的。/*class Solution {public:    string convert(string s, int numRows) {       ......
  • 错误: 操作符不存在: integer = character varying 建议:没有匹配指定名称和参数类型
    postgresql对变量类型比较敏感,对相应的变量进行类型转换之后就可以了修改前:<iftest="lx!=nullandlx.size>0">ANDt.lxin<foreachcollect......
  • C++ 泛型(模板与容器)
    文章目录​​一、泛型的基本思想:​​​​函数模板的性质​​​​C++模版函数/类的语法​​​​类模板的性质​​​​二、C++STL简介​​​​2.1算法(algorithm)​​​​2.......
  • C++虚函数
    C++三大特性:封装、继承、多态在这里谈下多态,多态指的是在类之间存在继承关系时,有的函数声明为virtual函数,当我们将子类指针或引用转化为父类指针或引用时,调用某个虚函数时......
  • OpenCV-Python-C++ 全套视频详讲
    更多资料请关注公众号:计算机视觉与图形学实战​​2021OpenCV-C++课程实践(理论与实践)​​​​2021年OpenCV-Python从入门到实战全套课程(附带课程课件资料+课件笔记)​​​​......
  • C++complex 中学到的知识
    #ifndef__COMPLEX__#define__COMPLEX__classComplex{ public: //传值 complex(doubler=0,doublei=0) :re(r),im(i) {} complex&operator+......
  • C++/Python混合编程
    以C++为底层基础,Python作为上层建筑,共同搭建起高性能、易维护、可扩展的混合系统。Python本身就有C接口,可以用C语言编写扩展模块,把一些低效耗时的功能改用C实现......
  • 【c++基础】从json文件提取数据
    前言标注数据导出文件是json格式的,也就是python的dict格式,需要读取标注结果,可以使用c++或者python,本文使用c++实现的。JsonCpp简介JsonCpp是一种轻量级的数据交换格式,是个跨......