AHTOXA 18 1 сентября, 2020 Опубликовано 1 сентября, 2020 · Жалоба 6 часов назад, haker_fox сказал: Он (если ян е ошибаюсь), эквивалентен "свободному" (безбашенному) Си-кастованию) Нет. Сишный каст действует как поочерёдные попытки применения всё более мощных xxx_cast<>(). Сначала const_cast<>, потом static_cast<>(), если и он не проходит, то reinterpret_cast<>(), и, наконец, комбинацию reinterpret_cast<> и const_cast<>(). Поэтому не всегда можно понять, какой именно каст получился. И в тексте сложно найти, где сишный каст. Но вроде бы и какие-то плюсы у него были... 10 минут назад, Сергей Борщ сказал: Этот new не выделяет память. Фактически это вызов конструктора. Да, память выделили malloc()-ом. Но без new обойтись не удалось, пусть он и не выделяет память. Это я к вот этой фразе: 4 часа назад, __inline__ сказал: Для классов с инитом конструкторов - тольлько new/delete. Без вариантов! Получается, что варианты есть, но для вызова конструктора - только new. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 68 2 сентября, 2020 Опубликовано 2 сентября, 2020 · Жалоба 5 часов назад, AHTOXA сказал: Получается, что варианты есть, но для вызова конструктора - только new. Насколько я понял, автор цитируемой фразы ("Для классов с инитом конструкторов - тольлько new/delete. Без вариантов!") имел в виду, судя по тексту самой фразы, что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new). Что совершенно неверно и выдаёт непонимание на уровне азов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 2 сентября, 2020 Опубликовано 2 сентября, 2020 · Жалоба 6 minutes ago, dxp said: что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new) Вот я и так его и понял) При этом сильно удивился, т.к. использую классы с конструкторами и совершенно не использую new/delete/malloc/calloc. 6 minutes ago, dxp said: Что совершенно неверно и выдаёт непонимание на уровне азов. Меня до сих пор удивляет, когда люди говорят что-то в стиле, что Си++ это оверхэд в микроконтроллерах... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 2 сентября, 2020 Опубликовано 2 сентября, 2020 (изменено) · Жалоба 2 hours ago, haker_fox said: Меня до сих пор удивляет, когда люди говорят что-то в стиле, что Си++ это оверхэд в микроконтроллерах... А меня удивляет, что опять 1,5 участника форума сделали меня "крайним". Просвещаемся: https://gamedev.ru/code/forum/?id=251674 Как раз мой случай: Quote Классы С++ должны инициализироваться конструкторами и через malloc их так вот создавать нельзя. Можно работать как со структурами Си (с помощью malloc) с классами которые являются POD (plain old data) - и такие в качестве одного из требований не должны ни на каком уровне внутри себя содержать классы-не-POD по значению (и разницы между ключевыми словами struct и class здесь нет). Лучшим выходом тут было бы переписывание с malloc/free на new/delete, потому что с конструкторами оно там всё само правильно разрулит. Изменено 2 сентября, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 2 сентября, 2020 Опубликовано 2 сентября, 2020 · Жалоба 1 hour ago, __inline__ said: сделали меня "крайним". Я не вас имел в виду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 2 сентября, 2020 Опубликовано 2 сентября, 2020 · Жалоба 4 часа назад, dxp сказал: Насколько я понял, автор цитируемой фразы ("Для классов с инитом конструкторов - тольлько new/delete. Без вариантов!") имел в виду, судя по тексту самой фразы, что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new). Что совершенно неверно и выдаёт непонимание на уровне азов. А мне показалось, что эта фраза была в контексте malloc vs new. Вряд ли уж @__inline__ не знает о возможности статического создания объектов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 2 сентября, 2020 Опубликовано 2 сентября, 2020 · Жалоба 3 часа назад, __inline__ сказал: Классы С++ должны инициализироваться конструкторами и через malloc их так вот создавать нельзя. Я же показал, что можно. И по вашей ссылке этот вариант был упомянут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew_Q 0 7 октября, 2020 Опубликовано 7 октября, 2020 (изменено) · Жалоба А вот это http://wiki.pic24.ru/doku.php/osa/ref/intro топикстартеру предлагали? Изменено 7 октября, 2020 пользователем Andrew_Q Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться