В вашем примере с кучей new
возвращает указатель на неконстантный. Тот факт, что вы сохранили его в указателе на const (а затем const_cast
вернул его обратно в указатель на неконстантный), не меняет того факта, что сам объект не является константным так же, как стек Выделено одно.
Однако вы можете создать объект const в куче:
const Class* object = new const Class();
В таком случае приведение к указателю на неконстантный и вызов неконстантного метода будет в той же ситуации, что и объект, выделенный из стека констант.
(Идея создания const-объекта в куче была для меня новой, я никогда раньше этого не видел. Спасибо Чарльзу Бэйли.)