Здравствуйте, LaptevVV, Вы писали:
LVV>const_cast<int>(*pp) = 1;
LVV>Компилятор сообщает, что не может преобразовать const int в «чистое» int. Его, конечно, можно «обмануть», подменив указатель
так тоже можно
const_cast<int&>(*pp) = 1;
Здравствуйте, WiseAlex, Вы писали:
WA>Здравствуйте, LaptevVV, Вы писали:
LVV>>const_cast<int>(*pp) = 1;
LVV>>Компилятор сообщает, что не может преобразовать const int в «чистое» int. Его, конечно, можно «обмануть», подменив указатель
WA>так тоже можно
WA>const_cast<int&>(*pp) = 1;
Спасибо.
Здравствуйте, DemAS, Вы писали:
DAS>Здравствуйте, runtime2, Вы писали:
R>>Никогда такого не слышал
R>>Скорее всего не верно.
DAS> Хм.. а чем тогда отличается malloc() от new ?
Принципиальная разница в том, что malloc() — это библиотечная функция (единица кода),
а new — это оператор (еденица языка).
А уже из этого вытекает всё остальное, начиная от вызова конструкторов и заканчивая переносимостью.
new работает на уровне семантики языка, malloc() — на уровне указателей и байтов.
DemAS пишет:
> 1. new char[1000] — гарантирует, что выделенная память будет
> представлять собой непрерывный фрагмент
Да, гарантирует.
> 2. malloc() — не гарантирует, что выделенная память будет представлять
> собой непрерывный фрагмент
Нет, вы не правы, тут тоже malloc гарантирует непрерывность.
Если бы ее не было, как бы вы по одному возвращенному указателю
до других участков памяти достучались ?
> 3. если у меня память выделена с помощью new [], то я могу обращаться к
> отдельным ее байтам по индексу:
Да, но не потому что это new, а потому что выделяли вы массив.
> 4. Если память получена в результате вызова malloc, то обращаться к
> отдельным ее байтам по индексу я не могу (вследствии 2).
Нет, не правильно, можете так же как и в случае с new.
new отличается от malloc только тем, что
-- new вычисляет размер выделяемой памяти сам, на основе типа выделяемого
объекта. malloc (и другим С-шным функциям) надо давать уже размер в байтах.
-- new — это языковое средство, и он автоматом производит инициализацию,
положенную в языке для этого типа данных. В частности, вызывается конструктор.
malloc про типы данных С/С++ и их конструкторы ничего не знает.
Posted via RSDN NNTP Server 2.1 beta