基到派生的转换需要通过 static_cast
或 dynamic_cast
进行显式转换。当基数是虚拟时,只有后者适用。此外,dynamic_cast
只能用于多态类型。两者一起似乎表明,鉴于所涉及的类型不是多态的,将虚拟基础转换为派生实际上是不可能的。这是真的吗?
最佳答案
您对标准的解释似乎是正确的。
但是我愿意争辩说这无关紧要,因为你假设的带有非虚拟析构函数的虚拟基础是一场灾难,当有人试图多态删除它并遇到未定义的行为时,它就会发生,因为析构函数是非-虚拟。
关于c++ - 非多态类型派生类型的虚拟基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29702211/