1 、基本类型转换 |
这是最常见的类型转换。 |
1.1 int to float(or double) |
eg: int ia = 10; |
double da = (double)(ia); |
da = 10.0000000000000000; |
1.2 double or float to int |
double da = 10.08 |
double da1 = 10.99 |
int ia = int(da); |
ia = 10; |
int ia1 = int(da1); |
ia1 = 10; |
2 类转换 |
定义两个类: A, B; |
class A |
{ |
public: |
private: A * next; |
int a; |
int b; |
} |
class B: public A |
{ |
private: |
int *c; |
} |
如果一个链表中多数节点的类型为 A ,但有的节点类型为 B ,此时为了部浪费空间,不能全部使用 B 作为所有节点的类型,而应以 A 作为所有节点类型。 |
Eg : |
A *link; |
链表 link 已经有 3 个 A 类型的节点,我们在链表尾上插入一个 B 类型的节点,先生成 B *node = new B(); |
给 node 的成员赋值,此时要转换为 A 类型才能插入链表中 : |
A *temp = NULL; |
temp = (A *)( node ); |
此时把 temp 插入链表尾即可。 |
当要使用 B 类型的节点 node1 时,根据 A 类型的数据成员判断节点为 B 类型(插入 B 类型节点时设置信息),然后把节点转化为 B 类型。 |
B *btemp = NULL; |
btemp = (B *)( node 1); |
此时 node1 转化成 B 类型,可以使用成员 c 了。 |
3 内存地址和类转换。 |
定义一个类 C 。 |
class C |
{ |
public: |
int a; |
int b; |
} |
C *link2 = new C [ 5 ]; |
设置一个变量 : int var; |
var = int ( &link2); |
在这个程序的其他地方要使用 link2 时,进行转换。 |
C *temp = (C *)(var); |
亦谈c++中的类型转换
