请看下面的内容:
struct A
{
std::string* get() const
{
//return const_cast<std::string*>(&m_pObj);
return &const_cast<A*>(this)->m_pObj;
}
std::string m_pObj;
};
将this
进行const_cast
然后解除const属性再进行操作是否会产生未定义行为?有没有一种情况可以在用const_cast
取消指针的常量性后解除引用却不会导致未定义行为?
(我知道上面的示例是糟糕的实践和设计,可以使用mutable解决 - 但这不是重点)
A const a; std::cout << *a.get();
是可以的,但a.get()->clear();
不可以。 - David Rodríguez - dribeas->clear()
)而不是我的(解引用+修改[0]
),所以我偷了它,希望你不介意。 - Konrad Rudolph