简介

static_cast() : 表示编译级别的强制类型转换, 且不能发现运行是的错误. 类似C的(int) 之类的强制转圈, 不能去除const属性, volatile 属性. 还有一个unaligned属性

dynamic_cast<>() : 运行时检查类型. 主要用于含有虚函数的父类和子类之间的指针转换. 会检查是否能够完成这次转换, 如果不能返回0

const_cast<>(): 作为static_cast的补充, 可以去除const属性

reinterpret_cast<>(): 低层次的类型转换, 可以将指针转为int类型或者long类型.

参考链接

https://blog.csdn.net/ykun089/article/details/106495892

https://www.cnblogs.com/chenyangchun/p/6795923.html

code

class Father{
public:
Father(){
cout << "I'am Father!!\n";
}
~Father(){}
virtual void print(){
cout<<"FFFF\n";
}
}; class Son : public Father{
public:
Son() {
cout << "I'am Son!!\n";
}
~Son(){}
void print(){
cout<<"SSSS\n";
}
}; int main() {
const char a = 'a';
int b = static_cast<char>(a);
const int g = 20; int h = static_cast<int>(g);
// int *h = static_cast<int*>(&g); // 不知道为什么这个const属性会编译出错, 但是上面的不会错误
cout << "=====================" << endl;
Father * f = new Son();
f->print();
Son *p = dynamic_cast<Son*>(f);
p->print();
Father *p1 = dynamic_cast<Father*>(p);
p1->print();
cout << "-----------------------" << endl;
int *h1 = const_cast<int*>(&g); // 去掉const 属性 网站上说去掉const常量const属性
// 看来const 常量和const属性是不一样的. 比如
long long gg = 0;
char * cc = "I love you";
gg = reinterpret_cast<long long>(cc);
cout << gg << endl;
}

C++ 四种cast 的使用场景的更多相关文章

  1. C++的四种cast操作符的区别--类型转换(转)

    转自:     http://welfare.cnblogs.com/articles/336091.html Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 r ...

  2. C++的四种cast操作符的区别--类型转换

    Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通过改变一个变量的类型为别的类型从而 ...

  3. [转]C++四种cast操作符

    http://blog.csdn.net/starryheavens/article/details/4617637 C 风格(C-style)强制转型如下: (T) expression 或 T(e ...

  4. C++四种cast操作符

    C 风格(C-style)强制转型如下: (T) expression  或 T(expression) //函数风格(Function-style) 两种形式之间没有本质上的不同. 对于具有转换的简 ...

  5. java四种引用类型以及使用场景详解

    每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过“引用”.在 Java 中一切都被视为了对象,但是我们操作的标识符实际上是对象的一个引用(re ...

  6. 面试问题之C++语言:说一说C++中四种cast转换

    C++中四种类型转换是:static_cast.dynamic_cast.const_cast.reinterpret_cast 1.const_cast 常量转换,用于将const变量转为非cons ...

  7. android launchmode(四种启动模式)应用场景及实例

    模式介绍 [1] standard 模式 这是默认模式,每次激活Activity时都会创建Activity实例,并放入任务栈中. [2] singleTop 模式 如果在任务的栈顶正好存在该Activ ...

  8. Java - 四种引用类型及应用场景

    1. 强引用 new 一个对象的时候,就是强引用 Object object = new Object(); 只要强引用存在,垃圾回收就不会回收该对象,内存不足时会抛出OOM. 2. 软引用 定义:非 ...

  9. Java 中的四种引用及垃圾回收策略

    Java 中有四种引用:强引用.软引用.弱引用.虚引用: 其主要区别在于垃圾回收时是否进行回收: 1.强引用 使用最普遍的引用.如果一个对象具有强引用,那就 类似于必不可少的生活用品,垃圾回收器绝不会 ...

  10. C++中四种类型转换以及const_cast是否能改变常量的问题

    we have four specific casting operators:dynamic_cast, reinterpret_cast, static_cast and const_cast. ...

随机推荐

  1. Rubymine搭建Ruby开发环境

    1.下载和安装Ruby 下载链接:https://rubyinstaller.org/downloads/ 安装示意图: 注意勾选图示的两个选项 安装完成后在cmd窗口运行:ruby -v命令显示当前 ...

  2. kafka 基础入门

    kafka是什么 Kafka (Apache kafka is a distributed streaming platform) ,官方定义是一个分布式流式计算平台.在我开发的项目中,是把kafka ...

  3. [笔记]这些超级好用的html标签和css属性

    1.sup.sub 上标.下标,直接看下面的例子吧 A<sub>2</sub> 4<sup>2</sup> 42 A2 2.伪类属性的love hate ...

  4. 题解:UVA11214 守卫键盘 Guarding the Chessboard

    题意:输入一个 n×mn\times mn×m 棋盘,某些格子有标记.用最少的皇后守卫(即占据或者攻击)所有带标记的格子. 分析:因为不知道放几个皇后可以守卫所有带标记的格子,即回溯法求解时解答树的深 ...

  5. K8s新手系列之ReplicationController资源

    概述 官网地址:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller/ Repli ...

  6. vue3 基础-常用模板语法

    一个 vue 的单文件 SAP ( single page web application ) 即在一个 .vue 为后缀的文件中, 会包含3个部分. 模板: html 逻辑: javascript ...

  7. stopPropagation()方法阻止父级事件

    方式一 <div id="div1"> <div id="div2"></div> </div> $(" ...

  8. obs学习之3——obs初始化、析构

    在app的开发过程中,obs相关函数的使用顺序如下: 1.首先,初始化obs // 创建obs if ( !obs_startup( "en-US", nullptr, nullp ...

  9. 一文速通 Python 并行计算:12 Python 多进程编程-进程池 Pool

    一文速通 Python 并行计算:12 Python 多进程编程-进程池 Pool 摘要: 在Python多进程编程中,Pool类用于创建进程池,可并行执行多个任务.通过map.apply等方法,将函 ...

  10. Docker Compose部署随机图API

    Docker Compose部署随机图API 平时我们部署博客的时候,为了考虑美观会考虑使用随机图来作为文章的封面,现在有很多大佬愿意提供随机图API,通过API我们可以很方便地部署随机图,不必自己寻 ...