請參閱以下內容:是否取消引用來自const_cast的指針始終調用未定義的行爲?
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
UB的const_cast
?是否有任何時間解除const_cast
結果的指針移除的指針不是調用UB?
(我知道上面的例子是不好的做法,不好的設計,並可以與可變來解決 - 這不是點)
只要解除引用不用於*修改*對象,就沒有UB。那就是:'一個const a; std :: cout << * a.get();'很好,但是'a.get() - > clear();'不是。 –
@大衛是的;請參閱更新。哦,我喜歡你的榜樣(' - >清除()')礦(解引用+修改'[0]'),所以我已經偷了它,我希望你不要介意。 –
沒問題:) +1 –