类型转换(二)

const_cast:去掉const属性转换 const_cast<目标类型>(标识符)//目标类型只能是指针或是引用
#include<iostream>
using namespace std;
struct test
{
	int data;
};
void main()
{	
	const test a = { 100 };
	//test a1 = const_cast<test>(a);//会报错,因为目标类型只能是指针或引用
	test &a1 = const_cast<test&>(a);//目标类型为引用
	a1.data = 200;
	cout << " a:" << a.data << '\t' << "a1:" << a1.data << endl;
	test *a2 = const_cast<test*>(&a);//目标类型为指针
	a2->data = 300;
	cout << " a:" << a.data << '\t' << "a2:" << a2->data << endl;
	const int b = 10;
	int &b1 = const_cast<int&>(b);//目标类型为引用
	b1 = 20;
	cout << " b:" << b << '\t' << "b1:" << b1 << endl;
	int *b2 = const_cast<int*>(&b);//目标类型为指针
	*b2 = 30;
	cout << " b:" << b << '\t' << "b2:" << *b2 << endl;
}

在这里插入图片描述

如果const_cast<目标类型>(标识符)中的目标类型不是指针或者引用,会报这个错误

在这里插入图片描述

reinterpret_cast:重新解释类型转换 reinterpret_cast<目标类型>(标识符)

它可以进行强制类型转换

#include<iostream>
using namespace std;
class test
{
public:
	virtual void A() = 0;
};
class Book
{
	void printp()
	{
		cout << "book" << endl;
	}
};
void main()
{	
	test * base = NULL;
	Book* book = reinterpret_cast<Book*>(base);	
}

我们要清楚的知道 要转的变量,类型转换前是什么类型,类型转换后 是什么类型。转换后有什么后果。
一般情况下,不建议进行类型转换。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值