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++标准类型数据间的转换的主要内容,如果未能解决你的问题,请参考以下文章

C++数值类型与stringCString之间的转换

C++转换构造函数和隐式转换函数

标准C++四个类型转换详解

c语言 不同数据类型间的混合运算

c语言 不同数据类型间的混合运算

C语言各类数据类型间的混合运算