c – 将一个子类对象的值传递给一个超类对象的函数是否有明确定义的行为?

c – 将一个子类对象的值传递给一个超类对象的函数是否有明确定义的行为?,第1张

概述我已经看过关于这个话题的 here和 here这些相关的问题,他们都描述了对象切片,但是它们都没有解决它是否安全,可靠和可预测. 有没有来自标准或编译器的保证,如果我将一个子类对象通过值传递给一个想要超类的方法,那么被切分的部分就是子类的成员,我将能够使用切片的超类对象没有任何关于未定义的行为的问题? 是的,它是安全,可靠和可预测的,因为它被标准定义好(它将从派生类对象复制构造基类对象). 但不, 我已经看过关于这个话题的 here和 here这些相关的问题,他们都描述了对象切片,但是它们都没有解决它是否安全,可靠和可预测.

有没有来自标准或编译器的保证,如果我将一个子类对象通过值传递给一个想要超类的方法,那么被切分的部分就是子类的成员,我将能够使用切片的超类对象没有任何关于未定义的行为的问题?

解决方法 是的,它是安全,可靠和可预测的,因为它被标准定义好(它将从派生类对象复制构造基类对象).

但不,不安全,不应该依赖,一般被视为不可预测的,因为你的读者不知道发生了什么.当其他人尝试稍后修改代码(包括您自己的未来自我)时,会触发许多错误.它基本上是一个no-no,与goto语句完全一样,也是完全清晰,可靠和可预测的.

总结

以上是内存溢出为你收集整理的c – 将一个子类对象的值传递给一个超类对象的函数是否有明确定义的行为?全部内容,希望文章能够帮你解决c – 将一个子类对象的值传递给一个超类对象的函数是否有明确定义的行为?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1233416.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存