1、数据类型转换(static_cast)

//数据类型转换
printf("%d\n", static_cast<int>(10.2));

2、指针类型转换(reinterpret_cast)
//指针类型转换
  int *pint = new int(1);
  char *pch = reinterpret_cast<char *>(pint);

3、涉及到const的指针类型转换(const_cast)
  const int num[5] = { 1,2,3,4,5 };
  const int *p = num;
  int *pint = const_cast<int *>(p);

4、子类转化为父类(dynamic_cast)

class man
{
public:
int name;
//加上virtual关键字,可以使得父类用子类初始化后可以调用子类的函数
virtual void run()
{
cout << "man is running" << endl;
}
}; class son :public man
{
public:
void run()
{
cout << "son is running" << endl;
}
}; void main()
{
/*man man1;
son son1;
man *p = &man1;
p->run();
p = &son1;
p->run();*/
man *pman = new man;
son *pson = new son;
//子类指针转换为父类指针,但是还是调用子类的函数
man *pfu = dynamic_cast<man *>(pson);
pfu->run();
system("pause");
}
    volatile关键字
  表示该变量易变,每次在访问该关键字修饰的变量时都要读内存,不对其进行优化。
  mutable关键字
  类的常成员函数在语义上是不允许修改类的成员变量的,但是有时候可能根据代码的需要并不是这么绝对。那么就可以使用mutable声明一个类的成员变量,它告诉编译器类的常成员函数可以修改这个变量。
  explicit关键字
  修饰构造函数,通常用作 构造函数静止隐式转换。
  四种类型转换
  . const_cast
  去掉类型的const或volatile属性。
const int a=;
int &b=const_case<int&>(a);   . static_cast
  静态类型转换,用于类型间强制转换。用于:
  ()基类和子类转换,子类指针转父类是安全的,父类转子类不安全。
  ()基本数据类型转换。
  ()空指针转换成目标类型指针。
  ()转换为void类型
int n=;
double d=static_cast<double>(n);
int *pn=&n;
double *d=static_cast<double*>(&n);
void *p = static_case<void*>(pn);
  
  .dynamic_cast
  动态类型转换,运行时类型安全检查(转换失败返回NULL)
  ()安全基类和子类转换,基类转子类会失败。
  ()必须有虚函数。
  ()相同基类不同子类间转换,结果为NULL。   .reinterpret_cast
  重新解释类型,没有进行二进制转换。
  一般用在函数指针类型之间转换。

最新文章

  1. 第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList();
  2. MySQL数据库的优化(上)单机MySQL数据库的优化
  3. JS添加MD5,JS提示框
  4. React快速入门
  5. MySQL配置文件my.cnf参数优化和中文详解
  6. page cache和buffer cache 图解
  7. os mac apache+php+mysql环境配置
  8. zookeeper_01:zookeeper概述
  9. 在阿里云ECS(CentOS6.5)上安装mysql
  10. MVC两种获取上传的文件数据变量的方式
  11. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(二)用户接口层之RtspClient类及其构造函数
  12. UNIX环境高级编程——守护进程列表
  13. 非阻塞模式(ioctlsocket)
  14. 1-蓝桥杯套路-java
  15. Java中的instanceof和isInstance基础讲解
  16. mysql(5.5)安装后忘记密码
  17. 解决MySQL Workbench导出乱码问题
  18. hdu 1828 Picture(线段树扫描线矩形周长并)
  19. C++中 线程函数为静态函数 及 类成员函数作为回调函数
  20. linux 查看进程启动路径

热门文章

  1. 在浏览器输入url,发生了什么?BSC结构图(百度搜索关键字发生了什么?)
  2. KVM安装配置笔记
  3. python基础语法170题
  4. python 多线程、线程锁、事件
  5. 【洛谷P1220】关路灯
  6. thinkphp之cookie操作
  7. ESP8266--WIFI热点扫描
  8. UIScrollView的简单使用
  9. 【SpringBoot】spring-session-data-redis 解决集群环境下session共享
  10. 【leetcode】Monotone Increasing Digits