这是向上还是不是?如果不是,请描述原因。提前致谢。
C++ 代码:
Base base;
Derived derived;
base = derived; // is this the upcast?
不,因为您没有分配指针或引用,所以您正在尝试分配一个实际实例。也就是说,您正在尝试将 的内容复制derived
到存在的内存中base
。你最终会得到的是切片,只Base
复制derived
.
这应该包含在任何体面的 C++ 书籍中。
并不真地。
一个隐含的“upcast”可能是这样的
Derived derived;
Base& base = derived;
请注意,这Base&
不是另一个Base
对象,而是对其他对象的引用(Base
包含在 中的那个derived
)
实际上,您所做的是创建另一个 Base并在其中复制了derived的Base子组件。
这仍然需要隐式向上转换,但从那时起,您base
不再与derived