C++ - Dynamic Cast的使用
来源:互联网 发布:linux utc时间 编辑:程序博客网 时间:2024/05/24 06:37
dynamic_cast与其他几个cast的对比可以参见http://blog.csdn.net/fishhg/archive/2011/04/02/6296255.aspx
这个帖子主要来补充几点。
1. 对于指针,cast失败会返回一个null ptr;
2. 对于引用,cast失败会抛出一个std::bad_cast异常,因为不存在空引用,引用是一个别名而非指针(只是c++使用指针来实现了引用)。
换句话说,对一个指针进行cast,等于在说:“这次转化一定成功吗?如果不是,我可以处理这种情况”。而对一个引用执行相同cast则等于申明一个不变式(invariant):"这次转化一定要成功,否则,肯定是哪里出了严重的错误"
一个比较好的例子:
if(const Circle * cp
= dynamic_cast<const Circle *>(getNextShape() ) ) {...} //这个写法比较好,限制了cp的作用域
- C++ - Dynamic Cast的使用
- 标准C++的类型转换符:static cast、dynamic cast、reinterpret cast和const cast
- 标准C++的类型转换符:static cast、dynamic cast、reinterpret cast和const cast
- understanding dynamic cast
- tf.cast的使用
- objective-c的dynamic
- [C++] 关于C++的cast
- @dynamic的使用
- C# dynamic的使用
- decode 和 cast 的使用
- c指针的强制转换(cast)
- cast使用
- Objective-C使用@dynamic和@synthesize
- objective-c 使用@dynamic和@synthesize
- objective-c 使用@dynamic和@synthesize
- Objective-C使用@dynamic和@synthesize
- Dynamic/Static/Reinterpret/Const and Volatile Cast
- 各种 cast dynamic,static ,const,reinterpret
- 王爽《汇编语言》(第二版) 学习笔记 ( 第三章 寄存器(内存访问))
- 参考手册中一个小错误
- 在Android中使用Handler和Thread线程执行后台操作
- 方正、营销通软件面试20110419
- ACM(访问控制模型),Security Identifiers(SID),Security Descriptors(安全描述符),ACL(访问控制列表),Access Tokens(访问令牌)
- C++ - Dynamic Cast的使用
- 我对contains 的理解
- Java SE 7 中Java语言的新特征
- MyEclipse快捷键大全,你知道多少?
- struts spring 整合
- 软件开发的终极目的是普及应用
- 夜间的胡思乱想
- winform与javascript
- C++ - 常量成员函数的含义