个人知识库 个人知识库
首页
关于
  • C语言
  • CPlusPlus
  • Linux
  • PHP
  • Nginx
  • MySQL
  • Redis
  • Docker
  • Kubernetes
  • SRS
阅读
常用工具
  • 分类
  • 标签
  • 归档
GitHub

Agnes001

坚持是一件很伟大的事业
首页
关于
  • C语言
  • CPlusPlus
  • Linux
  • PHP
  • Nginx
  • MySQL
  • Redis
  • Docker
  • Kubernetes
  • SRS
阅读
常用工具
  • 分类
  • 标签
  • 归档
GitHub
  • C语言

  • CPlusPlus

    • 基础特性

      • 枚举
      • 字符指针
    • vs2019设置
    • C++11特性

    • 并发编程

    • 引用
    • 类和对象
    • 友元和运算符重载
    • 继承
    • 继承和多态
    • 模板
    • C++基础总结
    • 类型转换
      • 1 static_cast
      • 2 reinterpreter_cast
      • 3 dynamic_cast
      • 4 const_cast
    • 异常
    • 容器
    • 算法
    • C++程序设计
    • C++ Primer总结
    • 编程技巧
    • 标准库体系结构与内核分析
    • 设计模式
    • cmake配置C++工程
    • libcurl的使用总结
    • web开发框架--drogon
    • log4cplus使用
    • C++数据类型
    • 函数
    • 线程
    • 进程
    • 文件操作
    • 日常问题记录
    • Cpp案例程序
    • 多线程
    • 侯捷c++11新特性
    • 侯捷stl
  • Lua技术栈

  • edoyun

  • 内存管理

  • 数据结构

  • 网络编程

  • Linux

  • 池化技术

  • 操作系统

  • python

  • 编程技术
  • CPlusPlus
Agnes001
2022-01-05

类型转换

# 1 static_cast

静态类型转换

#include	<iostream>
using namespace	std;	
int	main(void)	
{	
	double dPi = 3.1415926;	
	int num1 = (int)dPi;	//c语⾔的 旧式类型转换
	int num2 = dPi;			//隐式类型转换
	//静态的类型转换:		
	//在编译的时 进⾏基本类型的转换 能替代c⻛格的类型转换 可以进⾏⼀部分检查
	int num3 = static_cast<int>(dPi);	//c++的新式的类型转换运算符		
	cout <<	"num1:"	<< num1 << " num2:"	<< num2 << " num3:"	<< num3 << endl;	
	return 0;	
}

# 2 reinterpreter_cast

interpret 是解释的意思,reinterpret 即为重新解释,此标识符的意思即为数据的二进制形式重新解释,但是不改变其值 相当于是强制类型转换。

# 3 dynamic_cast

父类指针转换为子类指针

# 4 const_cast

const_cast<目标类型> (标识符) 去掉const属性,目标类类型只能是指针或引用。

#include <iostream>
using namespace	std;	
struct A{int data;};	
int	main(void)	
{	
	const A a = {200};	
	A a1 = const_cast<A>(a);//err,invalid use of const_cast, which is not a pointer, reference, nor a pointer-to-data-member type
	a1.data	= 300;	
	A &a2 = const_cast<A&>(a);	
	a2.data	= 300;	
	cout<<a.data<<a2.data<<endl;	
	A *a3 =	const_cast<A*>(&a);	
	a3->data = 400;	
	cout<<a.data<<a3->data<<endl;	
	const int x	= 3;	
	int	&x1	= const_cast<int&>(x);	
	x1 = 300;	
	cout<<x<<x1<<endl;	
	int	*x2	= const_cast<int*>(&x);	
	*x2	= 400;	
	cout<<x<<*x2<<endl;	
	return 0;	
}
编辑此页
#type_cast
C++基础总结
异常

← C++基础总结 异常 →

Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式