这是否是一个上流?如果没有,请说明原因。提前谢谢。
C ++代码:
Base base;
Derived derived;
base = derived; // is this the upcast?
答案 0 :(得分:4)
不,因为您没有指定指针或引用,您尝试分配实际实例。也就是说,您尝试将derived
的内容复制到base
存在的内存中。你最终会得到的是切片,只复制Base
derived
部分的内容。
这应该包含在任何体面的C ++书中。
答案 1 :(得分:1)
不是。
隐含的#34; upcast"可能有点像
Derived derived;
Base& base = derived;
请注意,Base&
不是另一个Base
对象,而是引用到其他Base
(derived
中包含的<}} < / p>
你所做的,实际上是创建另一个 基础并在其中复制派生的基础子组件强>
这仍然需要隐式上传,但从那时起,base
与derived
不再相关