
一、 C++中四种cast转换
C++中四种类型转换是:static_cast、dynamic_cast、const_cast、reinterpret_cast。
1、const_cast:对于未定义const版本的成员函数,我们通常需要使用const_cast来去除const引用对象的const,完成函数调用。另外一种使用方式,结合static_cast,可以在非const版本的成员函数内添加const,调用完const版本的成员函数后,再使用const_cast去除const限定;
2、static_cast:完成基础数据类型;同一个继承体系中类型的转换;任意类型与空指针类型void* 之间的转换;
3、dynamic_cast:用于动态类型转换。只能用于含有虚函数的类,用于类层次间的向上(指的是子类向基类的转换)和向下转化(指的是基类向子类的转换)。只能转指针或引用。向下转化时,如果是非法的对于指针返回NULL,对于引用抛异常。它通过判断在执行到该语句的时候变量的运行时类型和要转换的类型是否相同来判断是否能够进行向下转换;
4、reinterpret_cast:几乎什么都可以转,比如将int转指针,可能会出问题,尽量少用;
二、C++和C的区别
设计思想上:
C++是面向对象的语言,而C是面向过程的结构化编程语言
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)