C++学习--四种类型转换

在C语言中强制类型转换均是:(new-type) expression,像:int *pa=(int*)pb;

在C++中提供了四种强制类型转换:

1.reinterpret_cast:

1.主要用于指针的转换,将一个指针转换为其他类型的指针,即使是两个无关的类,

2.将指针转换为基本数据类型,就是把地址转化为基本数据类型的值,

3.但不能用于基本数据类型之间的转换,reinterpret_cast转换的对象必须是指针。

2.static_cast:

1.完成基本数据类型之间的转换,

2.不能用于基本数据类型的指针类型之间的转换,

3.对于指针只能用于父类和子类的指针转换。

3.dynamic_cast:

1.用于多态,

2.两个类之间需要有继承关系,如果想把父类转换为子类指针,父类需要有虚函数接口,

3.如果是两个无关类,则需要虚函数接口。

4.const_cast:

1.去掉const属性,但在C++,即使去掉强制去掉const属性,依然无法修改常量的值。

总结:

在类指针之间进行类型转换需要考虑到内存大小问题,成员函数是放在代码区的,当成员函数没有访问到类的成员数据时,是不会发生问题,但有些转换:像父类转换为子类指针downcast(向下转换),然后访问子类的成员数据,会访问到不是我们想要的结果。子类的空间比父类的大,当是upcast(向上转换),即把子类指针转换为父类指针这是没有问题的。

猜你喜欢

转载自blog.csdn.net/weixin_40850689/article/details/85451042