在上一节中的4.4 -隐式类型转换(强制),你知道,编译器有时会隐式转换一个值从一个数据类型到另一个。当您想从一个数据类型提升到一个更大的类似数据类型的值时,使用隐式类型转换系统是好的。
许多新的程序员尝试这样的东西:浮动F = 10 / 4;。然而,因为10和4都是整数,没有升级发生。在10 / 4上执行整数除法,产生2的值,然后将其隐式转换为2,并赋给F!
在使用文本值(如10或4)的情况下,用浮点文本值(或10)替换一个或两个整数的文本值(或4),将导致两个操作数转换为浮点值,并使用浮点数学来完成除法运算。
变量F将以2的值结束。我们如何告诉编译器,我们要使用浮点除法,而不是整数除法?答案是通过使用一种类型的操作符(通常被称为一个演员)来告诉编译器做显式类型转换。一个演员是由程序员做一个类型转换的一个明确的要求。
型铸造
在C++中,有5种不同类型的转换:C风格转换,静态模型,动态模型,并将const,reinterpret cast。
我们将在本课C风格转换和静态模型。动态转换,我们将保存,直到我们覆盖指针和继承。
const转换和reinterpret cast一般应避免因为他们在罕见的情况下才有用,可能是有害的如果使用不当。
规则:避免const转换和reinterpret cast的除非你有一个很好的理由去使用它们。
static_cast的主要优点是它提供了编译时类型检查,很难做一个无心的错误。static_cast也(故意)比C风格转换不那么强大,所以你不能不小心删除const或你可能没有打算做其他的事情。
使用强制转换来进行隐式转换清除
当执行不安全的隐式类型转换时,编译器会经常抱怨。例如,考虑下面的程序:
许多新的程序员尝试这样的东西:浮动F = 10 / 4;。然而,因为10和4都是整数,没有升级发生。在10 / 4上执行整数除法,产生2的值,然后将其隐式转换为2,并赋给F!
在使用文本值(如10或4)的情况下,用浮点文本值(或10)替换一个或两个整数的文本值(或4),将导致两个操作数转换为浮点值,并使用浮点数学来完成除法运算。
但是,如果你使用的变量是什么?考虑这种情况:
int i1 = 10;
int i2 = 4;
float f = i1 / i2;变量F将以2的值结束。我们如何告诉编译器,我们要使用浮点除法,而不是整数除法?答案是通过使用一种类型的操作符(通常被称为一个演员)来告诉编译器做显式类型转换。一个演员是由程序员做一个类型转换的一个明确的要求。
型铸造
在C++中,有5种不同类型的转换:C风格转换,静态模型,动态模型,并将const,reinterpret cast。
我们将在本课C风格转换和静态模型。动态转换,我们将保存,直到我们覆盖指针和继承。
const转换和reinterpret cast一般应避免因为他们在罕见的情况下才有用,可能是有害的如果使用不当。
规则:避免const转换和reinterpret cast的除非你有一个很好的理由去使用它们。
2
3
int i1 = 10;
int i2 = 4;
float f = (float)i1 / i2;static_cast的主要优点是它提供了编译时类型检查,很难做一个无心的错误。static_cast也(故意)比C风格转换不那么强大,所以你不能不小心删除const或你可能没有打算做其他的事情。
使用强制转换来进行隐式转换清除
当执行不安全的隐式类型转换时,编译器会经常抱怨。例如,考虑下面的程序:
本文探讨了静态模型和动态模型的概念,分析了两者在不同场景下的应用和区别,帮助读者深入理解这两种模型的特性。

被折叠的 条评论
为什么被折叠?



