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

前端之家收集整理的这篇文章主要介绍了c – 将一个子类对象的值传递给一个超类对象的函数是否有明确定义的行为?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经看过关于这个话题的 herehere这些相关的问题,他们都描述了对象切片,但是它们都没有解决它是否安全,可靠和可预测.

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

解决方法

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

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

猜你在找的C&C++相关文章