【问题标题】:c++ get base class object from derived class pointer?c ++从派生类指针获取基类对象?
【发布时间】:2011-07-20 04:47:41
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: c++ derived-class superclass


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      例如

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

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

      【讨论】:

      • 您不需要为此进行动态转换。你只需要它来进行从 Base 到 Derived 的转换。而且由于 OP 想要一个新的 Base 对象,因此您根本不需要强制转换。 :)
      • 好的,谢谢。我被教导要在过多的演员阵容方面犯错,所以有时我会忘记什么时候是不必要的。
      【解决方案3】:

      Object Slicing

      Derived* obj = new Derived;
      base objOne = (*obj) ;  // Object slicing. Coping only the  Base class sub-object
                              // that was constructed by eariler statement.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-16
        • 2012-01-07
        • 1970-01-01
        • 2013-08-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多