首页 > 试题广场 >

说说你了解的类型转换

[问答题]

Cast其实是一种编译器指令,大部分情况下它并不会改变一个指针所含的真正地址,它只影响“被指出的部分的内存大小和它内容”的解释方式。

Const_cast:不能在不同的种类间转换,它仅仅把一个它作用的非const数据转换成const或者把const数据的const属性去掉。

Static_cast:可以实现c++中内置的基本数据类型间的相互转换,在涉及到类时,它不能进行无关类型(非基类和子类)指针间的转换,就算是相关类转换的话,不一定能包括虚函数。

Dynamic_cast:其他三种都是编译时完成的,这种是run-time时处理的;不能用于内置的基本数据类型的强制转换;转换成功的话返回的是指向类的指针或者引用,失败的话返回NULL;使用这个进行转换的话,基类中一定要有虚函数,否则编译不会通过。(一般派生类会比基类大,基类指针指向派生类时,假如不做类型转换的话会有所切割,该指针只能使用基类所属的函数与数据)

Reinterpret_cast: 可以进行任何数据类型之间的转换,甚至可以把一般的数据类型转换成指针,一般最好不要用。

发表于 2020-06-26 20:37:43 回复(0)