导航

2014年4月3日

摘要: 针对const_cast,太多人在用同一个示例问同一个问题:void main(){const int a = 3;const int *pc = &a;int *p = const_cast(&a);*p = 5;printf("%d,%d,%d",*p,*pc,a); //结果是 5,5,3}最终输出的a,为何是3而不是5?C++对用const定义的常数变量,不是靠地址空间中的内容来取数的,而是靠保存在符号表中的索引来取数的,因此常数变量a无论什么情况下使用都是常数3。事实上,变量a地址空间中的内容确实是5,但即使你*(&a)来取数仍是3。你可以 阅读全文

posted @ 2014-04-03 18:03 网名还没想好 阅读(252) 评论(0) 推荐(0) 编辑

摘要: C++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要一个新的C++类型的强制转换呢?新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。C++中风格是static_cast(content)。C++风格的强制转换其他的好处是,它们能更清晰的表明它们要干什么。程序员只要扫一眼这样的代码,就能立即知道一个强制转换的目的。四种转换的区别:static_cast:可以实现 阅读全文

posted @ 2014-04-03 17:47 网名还没想好 阅读(357) 评论(0) 推荐(0) 编辑