C++ 为什么可以';我是否使用在堆栈上创建的对象进行上转换?
这是不是一个向上的转变?如果没有,请说明原因。提前谢谢 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
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磅的袋子里。