C++标准类型数据间的转换
Posted Linux编程学堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++标准类型数据间的转换相关的知识,希望对你有一定的参考价值。
10 标准类型数据间的转换
在C++中,某些不同类型数据之间可以自动转换,例如:
void main(void)
int a = 6;
float b = 3.99;
a = a + b;
cout << "a = " << a << endl;
getchar();
return;
程序运行的结果如下:
a = 9
程序定义了一个float类型的变量b,存放3.99这个数值。那么,执行 a = a + b; 语句的时候,有如下的操作流程:
(1) 先执行 a + b; 那么,a 是int 类型,b 是float类型,那么,就把 a 转换成 float 类型与b进行相加操作,得到float类型的数据 9.99。
(2) 执行 a + b 得到 float 类型的数据结果9.99,再赋给a 变量,此时,转换成int类型, 这种转换是由C++编译系统自动完成的,用户不需干预。这种转换称为:隐式类型转换。C++还提供了“显式类型转换”,程序员在程序中指定将一种指定的数据转换成另一种指定的类型,其形式为:
类型名(数据)
如int(89.5),其作用是将89.5转换为整型数据89,在C语言中采用的形式为:
(类型名)数据
如(int)89.5。C++保留了C语言的这种做法,但提倡采用C++提供的方法。
以前我们接触的是标准类型之间的转换,现在,用户自己定义了类,就提出来一个问题:一个自定义类的对象能否转换成标准类型的数据?一个类的对象能否转换成另外一个类的对象?例如,能否将一个复数类数据转换成整数或双精度数?
对于标准类型的转换,编译系统是有章可循,知道怎么样进行转换。而对于用户自己定义的类,编译系统并不知道怎么样进行转换。解决这个问题的关键是让编译系统知道怎么样去进行这些转换,需要定义专门的函数来处理。下面就讨论这个问题。
以上是关于C++标准类型数据间的转换的主要内容,如果未能解决你的问题,请参考以下文章