前一段时间我和一群演员一起玩,显然我当时并没有真正得到它。我现在正在查看我的代码,我看到了这个:
Base(Derived &p_derived) : m_state(static_cast<Base>(p_derived).m_state){}
我认为我现在已经更好地理解了指针和引用的转换,感谢stackoverflow上的very good answer,但现在涉及到对象。将引用转换为对象时会发生什么?或者如果p_derived是对象本身而不仅仅是一个引用呢?是否会创建新对象?如果是这样,它们将如何实现?
我也很惊讶这可以编译,因为在Base.h中找到了这个代码,Derived只是前向声明意味着它不应该知道它实际上是从Base派生的。我尝试在另一个地方进行从Derived *到Base *的静态强制转换,但由于类型与翻译单元不相容,因此不能编译。