C++ 为什么可以';我是否使用在堆栈上创建的对象进行上转换?

C++ 为什么可以';我是否使用在堆栈上创建的对象进行上转换?,c++,object,upcasting,C++,Object,Upcasting,这是不是一个向上的转变?如果没有,请说明原因。提前谢谢 C++代码: Base base; Derived derived; base = derived; // is this the upcast? 不,因为您没有分配指针或引用,所以您正在尝试分配实际实例。也就是说,您正试图将derived的内容复制到存在base的内存中。最终的结果是切片,只复制派生的部分的基的内容 这应该包含在任何一本体面的C++书籍中。p> 不太可能 隐式的“向上投射”可以是 Derived derived; Ba

这是不是一个向上的转变?如果没有,请说明原因。提前谢谢

C++代码:

Base base;
Derived derived;
base = derived; // is this the upcast? 

不,因为您没有分配指针或引用,所以您正在尝试分配实际实例。也就是说,您正试图将
derived
的内容复制到存在
base
的内存中。最终的结果是切片,只复制
派生的
部分的
的内容

<>这应该包含在任何一本体面的C++书籍中。p> 不太可能

隐式的“向上投射”可以是

Derived derived;
Base& base = derived;
请注意,
Base&
不是另一个
Base
对象,而是对另一个
Base
对象的引用(包含在
派生的
中)

实际上,您所做的是创建另一个
,并在其中复制导出的子组件


这仍然需要一个隐含的上流,但是从那时起,你的<代码>基础<代码>不再与<代码>派生

有关。它不是上流,因为C++是这样工作的。你试图把10磅土豆塞进一个5磅的袋子里。