ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c – 我的老师不像其他人一样打字.有谁知道他在做什么?

2019-07-24 12:05:25  阅读:204  来源: 互联网

标签:static-cast c casting inheritance


我的老师在我们的一个铸造示例中包含了以下几行. c是Circle类的一个对象,它继承自Point类.在我搜索问题的答案“我可以将类Point的对象转换为Circle类型吗?”我发现他使用的语法与我曾经使用的每个网站不同.这些网站都使用static_cast和dynamic_cast语法.他不会在测试中使用static_cast和dynamic_cast,我只是想知道他在使用什么以及它是如何运作的.

另外,如果你能回答我是否可以将基础对象转换为派生类型,我非常感谢你.

output << "the center of the circle is at " << (Point) c; 
// casting `Circle` object `c` with type `(Point)`, calls the first overloaded >stream insertion operator"

解决方法:

(点)c被称为“C风格”演员.这基本上可以被认为是一个强力阵容,尽其所能使演员阵容成功.这意味着它最终可能会导致static_cast成为const_cast甚至是reinterpret_cast.

https://anteru.net/blog/2007/12/18/200/开始:

C-Style casting, using the (type)variable syntax. The worst ever invented. This tries to do the following casts, in this order: (see also C++ Standard, 5.4 expr.cast paragraph 5)

  • const_cast
  • static_cast
  • static_cast followed by const_cast
  • reinterpret_cast
  • reinterpret_cast followed by const_cast

And you thought it is just a single evil cast, in fact its a hydra!

来自Stroustrup本人:

Explicit type conversions (often called casts to remind you that they are used to prop up something broken) are best avoided.

C-style casts should have been deprecated in favor of named casts.

Stroustrup,Bjarne. C(C深度系列)之旅(Kindle位置7134).皮尔逊教育. Kindle版.

所以建议使用命名演员.在实践中,我仍然会遇到使用C风格的强制转换的专业代码,因为它使代码更加简洁和可读 – 如果你知道你在做什么 – 通常在它使用的地方等同于static_cast.我认为C值风格的演员阵容如果因为这些原因在上下文中被使用显然会导致static_cast,并且Stroustrup来自一个过于面向对象的视角,而他一般不屑于演员,我觉得它的价值是可以的.但你应该更喜欢命名演员.

你的老师可能正在使用C风格的演员表作为一个不那么可怕的演员介绍.

标签:static-cast,c,casting,inheritance
来源: https://codeday.me/bug/20190724/1522103.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有