c++ - 非多态类型派生类型的虚拟基础

标签 c++ inheritance language-lawyer dynamic-cast static-cast

基到派生的转换需要通过 static_castdynamic_cast 进行显式转换。当基数是虚拟时,只有后者适用。此外,dynamic_cast 只能用于多态类型。两者一起似乎表明,鉴于所涉及的类型不是多态的,将虚拟基础转换为派生实际上是不可能的。这是真的吗?

最佳答案

您对标准的解释似乎是正确的。

但是我愿意争辩说这无关紧要,因为你假设的带有非虚拟析构函数的虚拟基础是一场灾难,当有人试图多态删除它并遇到未定义的行为时,它就会发生,因为析构函数是非-虚拟。

关于c++ - 非多态类型派生类型的虚拟基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29702211/

相关文章:

c++ - 在不更改代码的情况下生成 NaN float 时停止调试器

php - 实体公共(public)字段的学说继承

qt - QML继承

c++ - std::rethrow_exception(nullptr) 未定义行为或 bad_exception?

c++ - C中的异构函数指针数组

c++ - 如何避免直接链接到cmake中的库文件?

c++ - 在语义 Action 中添加到灵气符号表

c++ - dynamic_cast的继承与使用

c++ - 标准库实现是否允许具有与 C++ 标准不同的类定义?

c++ - placement new 如何知道要创建哪个布局?