如何消除易变性?

48

如何消除变量的易失性?我应该使用哪种C++风格的转换?

1个回答

63

使用 const_cast

例如:

volatile sample *pvs = new sample();
sample *ps = const_cast<sample*>(pvs); //casting away the volatile-ness

也就是说,const_cast被用于去除常量和易变性。不幸的是,它的名称中没有包含“易变”的术语。也许这是因为关键字“const”比关键字“volatile”更常用。正如评论中所说的那样,cv_cast可能是更合适的名称!


19
他们应该叫它cv_cast或者其他什么名称。 - Jason S
3
@Jason:看起来不错。毕竟,C++标准经常使用“cv”来表示const-volatile! - Nawaz
1
@Bionix1441:使用 T * x = (T*)(obj); 语法,这适用于所有类型的转换。 - Nawaz
1
在C++中,不应该使用类似C的强制转换-即(T*)obj-因为每种类型的强制转换都会尝试,即使您只想要一个特殊的强制转换(否则编译器应该以错误终止)。 - Traummaennlein
1
@Caleth:此外,C风格的强制类型转换无法dynamic_cast一样完成某些操作,因此C++才添加了这个功能! - Nawaz
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接