16、面向对象-强制类型转换

一、C语言的强制类型转换

1、过于粗暴

任意类型之间都能进行转换,编译器很难判断其正确性

2、难于定位

在源码中无法快速定位所有使用强制类型转换的语句

二、C++强制类型转换

1、static_cast<T>(expr)   静态强转

1、用于基本类型间的转换,但不能用于基本类型指针之间的转换

2、用于有继承关系类对象之间的转换和类指针之间的转换

3、static_cast是在编译期间转换的,无法在运行时检测类型
所以类类型之间的转换有可能存在风险

#include <iostream>

using namespace std;

class Parent
{
};

class Child : public Parent
{
};

int main()
{
	int a = 1;
	char ch = 'x';

	a = static_cast<int>(ch);      //用于普通类型的转化
	cout << a  << endl;

//	int *p = static_cast<int *>(&ch);    //不能用于普通类型指针之间的转换
	
	Parent p;
	Child c;

	p = static_cast<Parent>(c);     //用于有继承关系的类对象之间的转换
									
	Parent *p1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值