gpt4 book ai didi

c++ - 按值将子类对象传递给采用父类(super class)对象的函数是否是明确定义的行为?

转载 作者:可可西里 更新时间:2023-11-01 16:04:46 25 4
gpt4 key购买 nike

here等相关问题我都看过了和 here关于这个话题,他们都描述了对象切片,但没有一个解决它是否安全可靠可预测

是否有来自标准或编译器的保证,如果我按值将子类对象传递给需要父类(super class)的方法,则被切掉的部分恰好是子类,我将能够使用切片的父类(super class)对象而不用担心未定义的行为?

最佳答案

是的,它是安全、可靠和可预测的,因为它由标准定义良好(它只会从派生类对象复制构造一个基类对象)。

但不,它不安全,不应依赖它,并且通常被视为不可预测的,因为您的读者不知道发生了什么。当其他人稍后尝试修改您的代码(包括您 future 的自己)时,这将引发很多错误。它基本上是一个禁忌,与 goto 语句的方式非常相似,后者定义明确、可靠且可预测。

关于c++ - 按值将子类对象传递给采用父类(super class)对象的函数是否是明确定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23119061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com