Jon*_*nas 0 c++ const-cast static-cast c++11
我正在看这个答案,想要使用.但是,当使用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)
decltype(this)是foo*.而const decltype(this)为foo* const.
你不要改变pinte-cv-qualifications,只改变指针.因此,每次都选择非常数过载.