-2

这是向上还是不是?如果不是,请描述原因。提前致谢。

C++ 代码:

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

2 回答 2

4

不,因为您没有分配指针或引用,所以您正在尝试分配一个实际实例。也就是说,您正在尝试将 的内容复制derived到存在的内存中base。你最终会得到的是切片,只Base复制derived.

这应该包含在任何体面的 C++ 书籍中。

于 2014-08-13T16:49:33.690 回答
1

并不真地。

一个隐含的“upcast”可能是这样的

Derived derived;
Base& base = derived;

请注意,这Base&不是另一个Base对象,而是对其他对象的引用Base包含在 中的那个derived

实际上,您所做的是创建另一个 Base并在其中复制了derived的Base子组件。

这仍然需要隐式向上转换,但从那时起,您base不再与derived

于 2014-08-13T17:03:35.390 回答