C++ 编程技巧与问题剖析
1. 新式类型转换
在 C++ 中,新式类型转换是重要的编程技巧。只有 dynamic_cast 与 C 风格的类型转换不等价,其他新式类型转换都有对应的旧式转换。以下是一些具体的类型转换分析:
void f()
{
A* pa; B* pb; C* pc;
pa = (A*)&ra1;
// 应使用 const_cast
pa = const_cast<A*>(&ra1);
pa = (A*)&a2;
// 无法用新式类型转换表达,使用指针结果未定义
pa = const_cast<A*>(&a2);
pb = (B*)&c1;
// 应使用 reinterpret_cast
pb = reinterpret_cast<B*>(&c1);
pc = (C*)&d1;
// 在 C++ 中无需转换
pc = &d1;
}
对于以下 C++ 类型转换的风格和正确性分析:
- unsigned char* puc = static_cast<unsigned char*>(&c); 和 signed char* psc = static_cast<signed char*>(&c); :错误,应使用 reinterpret_cast ,因为
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



