相关疑难解决方法(0)

在c ++中将非const转换为const

我知道你可以const_cast用来投射const到非const.

但是,如果你想将非const转换const为什么,你应该使用什么?

c++ types casting const constants

48
推荐指数
4
解决办法
6万
查看次数

const_cast vs static_cast

要添加const到非const对象,这是首选方法?const_cast<T>static_cast<T>.在最近的一个问题中,有人提到他们更喜欢使用static_cast,但我认为这const_cast会使代码的意图更加清晰.那么使用static_cast变量const 的论据是什么?

c++ casting const implicit-conversion

11
推荐指数
1
解决办法
8260
查看次数

为什么const_cast(或static_cast)不添加const?

我正在看这个答案,想要使用.但是,当使用static_cast和时,我得到一个分段错误,const_cast但如果我使用临时变量,一切都很好.很明显,因为非bar()自我调整版本的调用是自我反复的.但我虽然static_cast会导致a const foo*然后选择const版本bar().为什么会这样?

#include <iostream>
using namespace std;

class foo
{
    public:
    void bar() const
    {
        cout << "const" << endl;
    }

    void bar()
    {
        cout << "non-const" << endl;

//      static_cast<const decltype(this)>(this)->bar();

//      const_cast<const decltype(this)>(this)->bar();

        const auto& tmp = *this;
        tmp.bar();
    }
};

int main() {
    foo A;
    A.bar();
    const foo B;
    B.bar();
    static_cast<const foo*>(&A)->bar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ const-cast static-cast c++11

0
推荐指数
1
解决办法
386
查看次数