最近我发现一段 C++ 代码可以有效地执行以下操作:
char* pointer = ...;
const char* constPointer = const_cast<const char*>( pointer );
显然作者认为const_cast
意思是“添加常量”,但实际上const
也可以隐式添加:
const char* constPointer = pointer;
有没有什么情况我真的必须这样做const_cast
to指向 const 的指针 (const_cast<const Type*>
如上面的例子)?
当你有 2 个重载并且你想要强制执行 const 一个时。当您用一个术语称呼另一个术语时,通常会出现这种情况。
class A
{
public:
B* get();
const B* get() const;
};
我有一个非常量 A 但想运行 get() const 我可能会强制转换。特别是我可能会在非常量本身的实现中这样做。
B* A::get()
{
return const_cast<B*>( const_cast< const A*>(this)->get() );
}
当然我们可以这样做:
B* A::get()
{
const A* constthis = this; // no need to cast
return const_cast<B*>(constthis->get());
}
所以我们不必进行转换,但它使第一个解决方案成为单行解决方案,并且无需创建临时变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)