17、C++ 编程技巧与问题剖析

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 ,因为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值