1

假设我有 Derived* derivedPtr;
我想要来自 derivedPtr 的 Base baseObject;

基础 baseObject = *derivedPtr; 会使用适当的基类成员变量创建 baseObject 吗?

谢谢

4

3 回答 3

3

它是对象切片

Derived* obj = new Derived;
base objOne = (*obj) ;  // Object slicing. Coping only the  Base class sub-object
                        // that was constructed by eariler statement.
于 2011-03-22T04:39:20.857 回答
2

您可以使用动态转换来完成此操作。

例如

Base* baseObject = dynamic_cast<Base*>(derivedPtr);

http://www.cplusplus.com/doc/tutorial/typecasting/

于 2011-03-22T04:41:52.200 回答
0

是的。这实际上称为“切片”,因为您只是从派生类中切掉所有内容。

于 2011-03-22T04:37:36.733 回答