Has*_*yed 1 c++ const-correctness
这是const_cast的有效用法吗?我在构造函数中使用它,它看起来如下:
KeyLiteObject(const char * extension, const char * swap_suffix)
: _extension(extension),
_swap_suffix(swap_suffix),
_swap_suffix_extension(swap_suffix)
{
const_cast<std::string*>(&_swap_suffix_extension)->append(_extension);
}
Run Code Online (Sandbox Code Playgroud)
是的,字符串永远不会改变.
假设_swap_suffix_extension是一个const std :: string,那么为什么不这样做呢:
KeyLiteObject(const char * extension, const char * swap_suffix)
: _extension(extension),
_swap_suffix(swap_suffix),
_swap_suffix_extension( std::string( swap_suffix ) + std::string( extension ) )
{
}
Run Code Online (Sandbox Code Playgroud)
然后你可以完全避免const_cast ......