Ant*_*ony 11 c++ casting const implicit-conversion
要添加const到非const对象,这是首选方法?const_cast<T>或static_cast<T>.在最近的一个问题中,有人提到他们更喜欢使用static_cast,但我认为这const_cast会使代码的意图更加清晰.那么使用static_cast变量const 的论据是什么?
Jam*_*lis 14
不要使用任何一种.初始化引用该对象的const引用:
T x;
const T& xref(x);
x.f(); // calls non-const overload
xref.f(); // calls const overload
Run Code Online (Sandbox Code Playgroud)
或者,使用implicit_cast函数模板,如Boost中提供的模板:
T x;
x.f(); // calls non-const overload
implicit_cast<const T&>(x).f(); // calls const overload
Run Code Online (Sandbox Code Playgroud)
如果可以选择之间static_cast和const_cast,static_cast绝对是最好: const_cast应该只用来抛弃常量性,因为它是可以这样做的唯一的演员,和虚掷常量性是极其危险的.通过抛弃const而获得的指针或引用修改对象可能导致未定义的行为.
| 归档时间: |
|
| 查看次数: |
8260 次 |
| 最近记录: |