| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Placement New |
| Автор: Xenon 28.12.2006, 03:34 | ||||
Если мы пытаемся в память, выделенную под double, запихнуть переменную типа int что происходит? Неявное преобразование или просто белеберда? И чем в данном случае будет Type?
|
| Автор: Xenon 28.12.2006, 13:58 |
| Daevaorn, А почему тогда при попытке вывести содержимое, на которое указывает указатель, выводится какая-то хрень? |
| Автор: Daevaorn 28.12.2006, 20:42 |
потому что указатель свой тип не меняет при этом. вот и получается, что там лежит int, а ты разыменовываешь и поллучаешь значение узазателя на float |
| Автор: Xenon 28.12.2006, 22:33 |
| Daevaorn, так а как мне получиться таким образом значение переменной реальное? И если я таким образом в память под base попытаюсь засунуть derived класс, это урежется до base? |
| Автор: Daevaorn 28.12.2006, 22:40 | ||||
приведи указатель типу int*
Если конструктор Derived инициализирует поля данных, то ты убьешь память. Если нет, то есть шанс спастись. Но ничего не урежется, просто разыменовывание Base*, ты получишь Base, как и при полиморфном использовании. |
| Автор: JackYF 28.12.2006, 22:40 | ||
|
| Автор: Xenon 28.12.2006, 22:46 |
| А если использовать C++ вариант приведения типов? Какой из cast надо использовать? В ходе таких манипуляций (int сувать в double) я, естественно, теряю память? |
| Автор: Daevaorn 28.12.2006, 22:53 | ||
для указателей reinterpret_cast. Иногда static_cast
placemant new не выделяет память, а только размещает(создает) объект по данному адресу. Поэтому память ты не потеряешь, только можешь испортить "не свою" память |
| Автор: Xenon 28.12.2006, 23:07 |
| Daevaorn, я понимаю, что я помещаю, но я же ПОМЕЩАЮ объект меньшего размера в кусок памяти предназначеного для более большого оъекта? Да я вот тоже пробовал static_cast - не прокатило. С чем это связано-то? |
| Автор: Daevaorn 28.12.2006, 23:11 | ||
И что? Больше не меньше. Просто кусок будет не задействан. |
| Автор: Xenon 28.12.2006, 23:17 |
| Daevaorn, что и я хотел узнать |
| Автор: Daevaorn 28.12.2006, 23:23 | ||||
|