C++中为什么不要混用继承层级和数组


这篇文章主要讲解了“C++中为什么不要混用继承层级和数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中为什么不要混用继承层级和数组”吧!T.81:不要混用继承层级和数组
An array of derived classes can implicitly “decay” to a pointer to a base class with potential disastrous results.派生类的数组可以隐式退化为可能带来灾难性后果的指向基类的指针。
Example(示例)Assume thatAppleandPearare two kinds ofFruits.假定Apple和Pear是两种Fruit。Probably,aa[0]will be aPear(without the use of a cast!). Ifsizeof(Apple) != sizeof(Pear)the access toaa[1]will not be aligned to the proper start of an object in the array. We have a type violation and possibly (probably) a memory corruption. Never write such code.很有可能aa[0]是一个Pear(不需要类型转化)。如果sizeof(Apple)!=sizeof(Pear),对于aa[1]的访问位置就不会正确开始于下个对象。我们会遇到类型违反和可能的(几乎一定)内存破坏。永远不要这样写代码。
Note thatmaul()violates the aT*points to an individual object rule.Alternative: Use a proper (templatized) container:注意maul()已经违反了使用T*或onwer指明唯一对象原则。其他选项:使用适当的(模板化的)容器。
Note that the assignment inmaul2()violated theno-slicing rule.注意maul2()中的赋值操作违反了不要分割对象原则。
Enforcement(实施建议)Detect this horror!检出这种可怕的问题!感谢各位的阅读,以上就是“C++中为什么不要混用继承层级和数组”的内容了,经过本文的学习后,相信大家对C++中为什么不要混用继承层级 香港云主机和数组这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是开发云,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: SQL Server中如何将普通表转换成分区表

这篇文章将为大家详细讲解有关SQL Server中如何将普通表转换成分区表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天我们来看看将普通表转换为分区表。正文在设计数据库时,经常没有考虑到表分区的问题,往往在…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/25 12:16
下一篇 08/25 12:36

相关推荐