В C++ стек-размещенного объект может быть объявлен const
:Может ли выделенный кучей объект быть const в C++?
const Class object;
после этого пытается вызвать неконстантный метод на таком объекте не определенно поведение:
const_cast<Class*>(&object)->NonConstMethod(); //UB
Может кучу распределёнными объект be const
с такими же последствиями? Я имею в виду, что следующее:
const Class* object = new Class();
const_cast<Class*>(object)->NonConstMethod(); // can this be UB?
также не определено поведение?
Хм, после отправки ответа я понял, что он может также применяться к вашему выделенному стекю объекту. Можете ли вы предоставить дополнительную информацию о том, почему пример стека - UB? –
Пример стека является самым очевидным. Например, вы вызываете некоторую функцию и передаете указатель const на такой объект и где-то очень глубоко в стеке вызовов выполняется const_cast и вызывается неконстантный метод - приветствуем UB, очень плохо для переносимости. – sharptooth
@sharptooth Является ли этот пункт 3.10/15 в действии? –