const_cast在构造函数中可以接受

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)

是的,字符串永远不会改变.

Goz*_*Goz 7

假设_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 ......