delete [] const char
Меня всё устраивает, я ко всему привык, я это знаю. НО. Не кажется ли вам это слегка нелогичным?
Ну почему, почему одновременно: 1) нельзя менять данные, адресуемые указателем const char * 2) можно высвободить память, адресуемую указателем const char * Код:
const char *n=new char[10]; Код:
const char * const n=new char[10]; Выходит Отличный способ выстрелить себе в ногу, попробовав удалить константную строку. Код:
const char * const n="222"; Код:
char *n="111"; Кстати, пользуясь случаем, хочу провести мини-тест используемых компиляторов. Сообщите результат выполнения кода Код:
const char *p="111"; |
Ответ: delete [] const char
Xcode 5.1.1, Apple LLVM 5.1, opt. flags: -O0
result: eq |
Ответ: delete [] const char
msvs 2012. не компилируется))
после дописания main и прочего выводит eq |
Ответ: delete [] const char
msvc 2010: eq
|
Ответ: delete [] const char
Цитата:
И кстати delete можно перегрузить так, что он ничего менять/удалять не будет. Идея ооп также заключается в том что ты сам должен позаботиться чтобы деструктор корректно удалил данные не испортив их. А также имхо квалификаторы в с++ в целом для программиста - их всегда можно поменять кастами. |
Ответ: delete [] const char
Цитата:
Твоюж мать! У тебя не массив константный, а данные в нем, массив грохнуть можно (указатель точнее), данные менять нет, ВСЕ! З.Ы. деструкторы могут выполняться для константных объектов |
Ответ: delete [] const char
Во-первых, я попросил бы не касаться моих родственников.
Во-вторых - перестать истерить. В-третьих - замечание интересное, но в рамках уже сказанного выше - не актуальное. Я прям так и вижу, как пользователь брызжа слюной набирал этот гневный пост (даже поленился фрагмент цитирования выделить, хотя отвечает лишь на часть поста). Вот если б вместо эмоций повнимательнее присмотреться к: Цитата:
И ещё: Цитата:
|
Часовой пояс GMT +4, время: 21:04. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot