Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Динамически определить, имеет сложный тип или простой
|
|||
|---|---|---|---|
|
#18+
Здравсвуйте! Пишу некое подобие буфера – менеджера памяти – пула памяти (не спрашивайте зачем и не предлагайте плз. буст, стл, и прочее такое- так надо) и вот хотел спросить. Можно ли как то динамически определить имеет ли конструктор или явлется ли объектом класса элемент передаваемый в ранее выделенную при помощи malloc для того что бы вызвать при помощи размещающего оператора new конструкторы передаваемых объектов ну и установить некий флаг что бы потом вручную вызвать деструкторы. Что то вроде (пример из википедии) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. для простых типов такие конструкции то не нужны. Вот мне и нужно как то разделить код для объектов и для простых типов. Просто new не подойдет так как мне нужно выделть пул памяти, потом возможно изменять его размер итд. malloc, realloc подходит много лучше, сложности тока с объектами. Если динамичски определить нельзя придется передавть явно как параметр что вот мол объекты сейчас будем размешать а не хотелось бы городить лишних параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 11:14 |
|
||
|
Динамически определить, имеет сложный тип или простой
|
|||
|---|---|---|---|
|
#18+
LowCoder, Можно ли как то динамически определить имеет ли конструктор или явлется ли объектом класса элемент передаваемый в ранее выделенную при помощи malloc НЕТ для того что бы вызвать при помощи размещающего оператора new конструкторы передаваемых объектов ну и установить некий флаг что бы потом вручную вызвать деструкторы. Ты явно не тем занимаешься. В C++ выделение памяти под объект и инициализация объекта разделены, и менеджеры памяти занимаются только первым, а втрое всегда делает компилятор (руками пользователь должен это делать только в случае placement new) В любом случае менеджер памяти не должен такого делать. Во-первых, он для этого не предназначен, во-вторых, просто будут дважды вызываться конструкторы и деструкторы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 11:54 |
|
||
|
Динамически определить, имеет сложный тип или простой
|
|||
|---|---|---|---|
|
#18+
не совсем соглашусь. Если я определю буфер размера Н объектов класса то по идее в буфере должны размешатся проинициализированные экземпляры классов (объекты). Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 12:02 |
|
||
|
Динамически определить, имеет сложный тип или простой
|
|||
|---|---|---|---|
|
#18+
LowCoderне совсем соглашусь. Если я определю буфер размера Н объектов класса то по идее в буфере должны размешатся проинициализированные экземпляры классов (объекты). Или я не прав?Так два разных действия: выделить память под массив, вызвать конструкторы без параметров. Код для второго компилятор сгенерирует самостоятельно и, насколько понимаю, способа ему это запретить (получив при этом компилируемый код) не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 12:08 |
|
||
|
Динамически определить, имеет сложный тип или простой
|
|||
|---|---|---|---|
|
#18+
Опять же не соглашусь - если вы выделяете память при помощи malloc то конструкторы не будут вызваны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 12:19 |
|
||
|
Динамически определить, имеет сложный тип или простой
|
|||
|---|---|---|---|
|
#18+
LowCoderдля простых типов такие конструкции то не нужны.не нужны, но возможны, синтаксис позволяет однообразно конструировать как пользовательские, так и встроенные типы. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. всё это валидные конструкции, и сделано это специально, чтобы не надо было разделять код для объектов и простых типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 13:00 |
|
||
|
Динамически определить, имеет сложный тип или простой
|
|||
|---|---|---|---|
|
#18+
Благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 13:14 |
|
||
|
Динамически определить, имеет сложный тип или простой
|
|||
|---|---|---|---|
|
#18+
LowCoderОпять же не соглашусь - если вы выделяете память при помощи malloc то конструкторы не будут вызваны. Правильно, это и есть единственный способ не вызывать конструкторы — не создать объекты вообще... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2013, 15:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38149286&tid=2020455]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
151ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 266ms |

| 0 / 0 |
