gpt4 book ai didi

c++ 在运行时或编译时对对象进行类型转换

转载 作者:行者123 更新时间:2023-11-28 07:21:04 24 4
gpt4 key购买 nike

当我们像这样写状态网时会发生什么 其中 B 是在 C++ 中派生 D1 的类,是否创建了实际的新对象,或者只是完成了像原始类型这样的简单类型转换

    D1 d1;
(B)d1;

最佳答案

类型转换不会创建新对象,但是知道这两种类型的编译器可以应用所需的偏移量来将对象解释为类型转换对象。当然,编译器或运行时会确保转换是合法的。

在您的特定情况下,如果您将派生对象转换为基类,它称为“slicing”,派生部分会从基类对象中切除。为了直观地理解这一点,假设 d1 有一个内存区域来保存所有这些成员,因为它从 B 派生,它将有一个子区域来保存它的基类版本。当你将 d1 转换为基类时,你必须确保变量只引用子区域并忽略它的其余部分,换句话说,对象边界停止在基类部分。

关于c++ 在运行时或编译时对对象进行类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469170/

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