读书人

dynamic_cast坑爹的一端

发布时间: 2012-10-26 10:30:59 作者: rapoo

dynamic_cast坑爹的一面?

C/C++ code
RECT *pRect = new RECT;RECT *pDynResult = dynamic_cast<RECT*>(pRect); // pDynResult == pRect,正常delete pRect;pDynResult = dynamic_cast<RECT*>(pRect); // pDynResult == ?你猜猜?


[解决办法]
探讨

在VC2008里,执行最后一句之后,pDynResult依然等于pRect。而不是期望的NULL。
那么有什么办法判断一个指针是否属于某种类型,并且该指针仍然有效?

[解决办法]
只能说明C++是种较为宽容的语言,省去了很多编译期和运行期的检查。不是很安全。
其他更为安全的语言会在运行期甚至是编译器检查出这种错误。而不会让程序崩溃或者
获得不可预知的结果。表明的是C++及C语言坑爹的一面。

读书人网 >C++

热点推荐