请参阅以下内容:
struct A
{
std::string* get() const
{
//return const_cast<std::string*>(&m_pObj);
return &const_cast<A*>(this)->m_pObj;
}
std::string m_pObj;
};
Run Code Online (Sandbox Code Playgroud)
被取消引用const_cast的thisUB?有没有时间从const_cast指针的常量取消引用结果不会调用UB?
(我知道上面的例子是不好的做法,糟糕的设计,并且可以用可变的方式解决 - 这不是重点)
解除引用此UB的const_cast?是否有时间取消引用const_casting的结果指针的常量不会调用UB?
并非总是如此,只有当对象是 const(A实例是const A x;)并且取消引用用于修改数据时.如果它只用于读取它将不是未定义的行为,如果对象不是const,(可能根本不是,可能是对非const对象的const引用)它也不是UB.