Jump to content

    
C2000

Кооперативная RTOS для STM32

Recommended Posts

6 часов назад, haker_fox сказал:

Он (если ян е ошибаюсь), эквивалентен "свободному" (безбашенному) Си-кастованию)

Нет. Сишный каст действует как поочерёдные попытки применения всё более мощных xxx_cast<>(). Сначала const_cast<>, потом static_cast<>(), если и он не проходит, то reinterpret_cast<>(), и, наконец, комбинацию reinterpret_cast<> и const_cast<>(). Поэтому не всегда можно понять, какой именно каст получился. И в тексте сложно найти, где сишный каст. Но вроде бы и какие-то плюсы у него были...

10 минут назад, Сергей Борщ сказал:

Этот new не выделяет память. Фактически это вызов конструктора.

Да, память выделили malloc()-ом. Но без new обойтись не удалось, пусть он и не выделяет память. Это я к вот этой фразе:

4 часа назад, __inline__ сказал:

Для классов с инитом конструкторов - тольлько  new/delete.  Без вариантов! :don-t_mention:

Получается, что варианты есть, но для вызова конструктора - только new.

Share this post


Link to post
Share on other sites
5 часов назад, AHTOXA сказал:

Получается, что варианты есть, но для вызова конструктора - только new.

Насколько я понял, автор цитируемой фразы ("Для классов с инитом конструкторов - тольлько  new/delete.  Без вариантов!") имел в виду, судя по тексту самой фразы, что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new). Что совершенно неверно и выдаёт непонимание на уровне азов.

Share this post


Link to post
Share on other sites
6 minutes ago, dxp said:

что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new)

Вот я и так его и понял) При этом сильно удивился, т.к. использую классы с конструкторами и совершенно не использую new/delete/malloc/calloc.

6 minutes ago, dxp said:

Что совершенно неверно и выдаёт непонимание на уровне азов.

Меня до сих пор удивляет, когда люди говорят что-то в стиле, что Си++ это оверхэд в микроконтроллерах...

Share this post


Link to post
Share on other sites
2 hours ago, haker_fox said:

Меня до сих пор удивляет, когда люди говорят что-то в стиле, что Си++ это оверхэд в микроконтроллерах...

 

А меня удивляет, что опять 1,5 участника форума сделали меня "крайним". :russian_ru:

 

Просвещаемся: https://gamedev.ru/code/forum/?id=251674

 

 

Как раз мой случай:

 

Quote

Классы С++ должны инициализироваться конструкторами и через malloc их так вот создавать нельзя.
Можно работать как со структурами Си (с помощью malloc) с классами которые являются POD (plain old data) - и такие в качестве одного из требований не должны ни на каком уровне внутри себя содержать классы-не-POD по значению (и разницы между ключевыми словами struct и class здесь нет).
Лучшим выходом тут было бы переписывание с malloc/free на new/delete, потому что с конструкторами оно там всё само правильно разрулит.

 

Edited by __inline__

Share this post


Link to post
Share on other sites
4 часа назад, dxp сказал:

Насколько я понял, автор цитируемой фразы ("Для классов с инитом конструкторов - тольлько  new/delete.  Без вариантов!") имел в виду, судя по тексту самой фразы, что если у класса есть конструктор, то обязательно будет выделение памяти (вызов new). Что совершенно неверно и выдаёт непонимание на уровне азов.

А мне показалось, что эта фраза была в контексте malloc vs new. Вряд ли уж @__inline__ не знает о возможности статического создания объектов.

Share this post


Link to post
Share on other sites
3 часа назад, __inline__ сказал:

Классы С++ должны инициализироваться конструкторами и через malloc их так вот создавать нельзя.

Я же показал, что можно. И по вашей ссылке этот вариант был упомянут.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.