提问人:k huang 提问时间:7/14/2022 更新时间:7/14/2022 访问量:70
使用对象切片进行有效分配
Using object slicing for effective assignment
问:
假设我有定义
struct A{
int a1 = 0;
int a2 = 1;
};
struct B: public A{
int b1 = 2;
int b2 = 3;
};
我有一个我要调用的 B 对象,我想将其从 A 继承的字段更新为我调用的另一个 A 对象中的值。显然,我可以通过分配每个字段来做到这一点,但是可以在这里使用对象切片吗?foo
bar
我尝试使用此代码
(A) foo = bar;
但它不会修改字段,我猜这是因为我以某种方式制作了副本。那么我可以使用对象切片来做到这一点吗,如果是这样,那就是 1.)不是 UB 和 2.)合理?
答: 暂无答案
评论
(A) foo
创建一个临时对象,它不允许像 .为什么不直接给出一个函数呢?A
foo
A
B
operator =(const A&)
(A&) foo = bar;
static_cast<A&>(b_obj) = a_obj;
- 直播 - godbolt.org/z/d3eGeb8WM