C++_强制类型转换

       

目录

1、C++新增转换符的原因

2、类型转换的概念

3、C++强制类型转换

3.1 static_cast

3.2 reinterpret_cast

3.3 const_cast 

3.4 dynamic_cast

结语 


前言:

        C++为了规范强制类型转换的可观性与安全性,引入了4种强制类型转换符,他们分别是:static_cast、reinterpret_cast、const_cast、dynamic_cast。

1、C++新增转换符的原因

        因为c语言的类型转换存在一些缺点,虽然c语言的转换风格简单易懂,但是有些场景下会导致数据精度的丢失不易被发现,即隐式类型转换的代码可读性不强, 而显示类型转换(强制转换)可以让多种类型之间相互转换,不够规范。

2、类型转换的概念

        由于C++兼容c语言,因此C++对类型转换的概念是沿用c语言的概念,只不过在其基础上做了优化,当两个对象之间发生了赋值或拷贝,而这两个对象的类型又不一样,就会发生类型转换,并且转换的类型是以被执行对象的类型为基准进行转换,比如赋值运算符的左右两侧类型不相同,或者函数的实参传给形参的类型不相同,又或者函数返回值与接收值类型不相同,这些场景下都会发生类型转换。

        c语言对类型转换有两种定义:

        1、隐式类型转换、即两个转换对象的类型不一样,让编译器完成他们之间转换,若他们之间不能转换则会报错。

        2、显示类型转换、又称强制类型转换,由程序员手动干预转换过程,通常在执行对象的前面加小括号,小括号里写转换之后的类型。

        类型转换测试代码如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
using namespace std;

int main()
{
	int i = 12;

	// 隐式类型转换
	double d = i;
	printf("%d, %f\n", i, d);
	int* p = &i;

	// 显示的强制类型转换
	int address = (int)p;
	printf("%x, %d\n", p, address);

	return 0;
}

         运行结果:

        转换过程细节图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安权_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值