大佬教程收集整理的这篇文章主要介绍了C中不同类树之间的转换,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
struct A { virtual void foo() = 0; }; struct A2 { virtual void foo() = 0; }; struct B : public A2 { void foo() { printf("test\n"); } }; int main() { B* b = new B; ((A*)b)->foo(); }
@R_262_10509@这是不好的做法,不应该这样做,但它一般是否有效?
尝试使用
static_cast<A*>(b) // invalid static cast (compile error) dynamic_cast<A*>(b) // returns null pointer value (runtimE)
你在做什么是有效的
> reinterpret_cast< A *>(b)
并且结果完全由您自己负责实施定义.
编辑纳瓦兹:相关标准段落:§5.2.10,条款
以上是大佬教程为你收集整理的C中不同类树之间的转换全部内容,希望文章能够帮你解决C中不同类树之间的转换所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。