投射和转换有什么区别?
这个问题在这里已经有了答案:
我相信Eric想说的是:
铸造是描述句法的术语(因此是句法意义)。
转换是一个术语,用于描述幕后实际采取的行动(以及因此的语义含义)。
cast-expression用于将表达式显式转换为给定类型。
和
形式(T)E的强制表达式(其中T是类型并且E是一元表达式)执行E的值到T的显式转换(第13.2节)。
似乎通过说语法中的转换操作符执行显式转换来支持这一点。
投射是一种告诉编译器的方式:“对象X实际上是Y类型,继续前进并将其视为类型。”
转换是说“我知道对象X不是Y类型,但是存在从Y类型的X创建新对象的方法,请继续并执行它。”
我想起理查德费曼在讲述哲学课的一段轶事,教授告诉他:“费曼,你是物理学家,在你看来,电子是一个'基本对象'?” 所以费曼问澄清问题“砖头是一个重要的对象?” 去上课。 每个学生对这个问题都有不同的答案。 他们说,“砖”的基本抽象概念是必不可少的客体。 不,一个特定的,独特的砖块是重要的对象。 不,你可以凭经验观察到的砖块是必不可少的物品。 等等。
这当然不能回答你的问题。
我不打算通读所有这些答案,并与他们的作者辩论我的真正含义。 我会在几周内写一篇关于这个主题的博客文章,我们会看看这件事是否引发了这个问题。
如何比喻,虽然,拉费曼。 你希望星期六早上烤一块香蕉面包(因为我几乎每个星期六的早晨都做。)所以你请教了烹饪的喜悦,它说:“等等等等......在另一个碗里,把干燥的食材搅拌在一起。 ..”
很明显,明天上午这种指导与你的行为之间有着密切的关系,但同样很明显,将指导与行动混为一谈也是错误的。 指令由文本组成。 它在特定页面上有一个位置。 它有标点符号。 你是否在厨房里一起搅拌面粉和小苏打,有人问“现在你的标点是什么?”,你可能会认为这是一个奇怪的问题。 动作与指令有关,但指令的文本属性不是动作的属性。
演员阵容并不像一个配方不是烘烤蛋糕的行为一样。 配方是描述行动的文本,然后您可以执行。 转换操作符是描述操作的文本 - 转换 - 然后运行时可以执行。
链接地址: http://www.djcxy.com/p/22905.html上一篇: What is the difference between casting and conversion?
下一篇: Functional Programming Vs Declarative Programming Vs Imperative Programming