首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

dynamic_cast坑爹的一端

2012-10-26 
dynamic_cast坑爹的一面?C/C++ codeRECT *pRect new RECTRECT *pDynResult dynamic_castRECT*(pRec

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语言坑爹的一面。

热点排行