显式/隐式类型转换/初始化

隐式和显式初始化
a) C++隐式初始化

int ival(1024);
string hello("hello rookie");

b) C++显式初始化

int val = 1024
string hello = "hello rookie"

*这里的“=”语法是拷贝构造函数,而不是赋值运算。
因为一个新对象被定义一定要有一个构造函数而不是一个赋值操作
string hello;
hello = “hello rookie”; <-这里hello已经被定义了,才是赋值操作。

隐式类型转换:
一般情况下,数据的类型的转换通常是有编译系统自动进行的,不需要人工干预,所以被称为隐式类型转换。
C++隐式转换发生在四种情况下:

a) 在混合类型的算数表达式中

int val = 3;
double dval = 3.1415;
ival + dval ;//ival被提升为double类型:3.0

b) 用一种类型的表达式赋值

int *p1 = NULL;//NULL(0)被转换成了int *类型的空指针值。

c) 用一个表达式传递给一个函数调用

extern double sqrt(double);
sqrt(2);//2被提升为double类型:2.0

d) 从一个函数返回一个表达式

double difference(int val1,int val2)
{
	return val1-val2;//返回值被提升为double类型。
}

C++用户定义类对象之间可以含有隐式转换

void dosomething (A aobject);
class A{
public:
A(int x=0);
}
dosomething(20);//隐式转换

显示类型转换:
当程序要求一定要将某一类型的数据转换为另外一种类型,则可以利用强制类型转换运算符转换,这种强制转换过程称为显式转换。

显式类型转换格式为:
(强制类型名)表达式
用于强行将“表达式”的值转换成“类型名”所表示的数据类型。例如,(int)4.2的结果就是4;强制类型转换的目的是使表达式的值的数据类型发生改变,从而使不同类型数据之间的运算能够进行下去。

自动类型转换:
也称为显式类型转换,是指不需要书写代码,由系统自动完成类型转换。C++内建类型(char ,int ,short,double etc)对象之间默认含有隐式转换。

转换规则:
从存储范围小的类型到存储范围大的类型
具体规则:
short(char)->int->long->float->double
也就是说int类型的变量可以自动转换为long类型,
int b = 10;long l = b;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值