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
  重新解释类型,没有进行二进制转换。
  一般用在函数指针类型之间转换。

c++ 指针类型转换的更多相关文章

  1. C语言中将0到1000的浮点数用强制指针类型转换的方式生成一幅图像

    搞过计算机图像的人都知道,图像中的每一个像素通常为一个整型数,它可以分成4个无符号的char类型,以表示其RGBA四个分量.一幅图像可以看做是一个二维整型数组.这里我会生成一个float数组,其数组大 ...

  2. 43.c++指针类型转换

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

  3. C指针类型转换问题

    先看下面的代码: #include<stdio.h> int main () { int a; char *x; x = (char *) &a; a = 512; x[0] = ...

  4. C++_知识点_指针类型转换

    #include <iostream> using namespace std; int main(){ ] = {, , , , , , , , , }; int* p = (int*) ...

  5. C++智能指针类型转换

    #include <iostream> #include <memory> struct Base { int a; virtual void f() const { std: ...

  6. [翻译]类型双关不好玩:C中使用指针重新解释是坏的

    原文地址 Type punning isn't funny: Using pointers to recast in C is bad. C语言中一个重新解释(reinterpret)数据类型的技巧有 ...

  7. 对象布局已知时 C++ 对象指针的转换时地址调整

    在我调试和研究 netscape 系浏览器插件开发时,注意到了这个问题.即,在对象布局已知(即对象之间具有继承关系)时,不同类型对象的指针进行转换(不管是隐式的从下向上转换,还是强制的从上到下转换)时 ...

  8. 【面经】【转】C++类型转换

    C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:type b = (type) a. C++风格的类型转换提供了4种类型转换操作符来应对不同场景的应用. const_cas ...

  9. C++ 四种强制类型转换

    来自csdn:http://blog.csdn.net/hgl868/article/details/46619399 C风格的强制类转换(Type Cast)很简单,不管什么类型的转换统统是: TY ...

随机推荐

  1. qt table中字体倾斜

    在itemdelegate,的paint事件中添加 QStyleOptionViewItem newOption(option);                QTransform transfor ...

  2. wex5 如何导包

    wex5中 导jar包 要先把jar文件放在: E:\WeX5\runtime\BaasServer\WEB-INF\lib目录中(我wex5放的是E盘) 点击项目 --> 属性 --> ...

  3. webpack常用的插件

    webpack常用的开发插件 1.clean-webpack-plugin 运行webpack build时先把打包进入的文件夹清空 注意,它是以对象的方式去接收的 const { CleanWebp ...

  4. java String int转换的不同方法

    参考了网上某篇日志的内容,现摘录如下: String转int: 最常见:int i = Integer.parseInt("123"); 罕见:Integer i= Integer ...

  5. java面试题全集(中)

    这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行 ...

  6. pandas的基本功能

    一.重新索引 (1)reindex方式 obj = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4]) print(obj) obj.re ...

  7. 【转】Linux添加虚拟网卡

    转自:https://blog.csdn.net/hzhsan/article/details/44677867 有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡.这里介 ...

  8. percona-toolkit 3.0.13 简单安装记录

    percona-toolkit 3.0.13 简单安装记录 环境:centos6.x mysql:8.0.17 yum -y install perl-DBIyum -y install perl-D ...

  9. python接口自动化七(重定向-禁止重定向Location)

    前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...

  10. 故障检测、性能调优与Java类加载机制

    故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消 ...