Size: a a a

cxx.Дискуссионная

2020 March 07

O

Ofee in cxx.Дискуссионная
акварель на мету
но это же всего 16 байт
Вызов через этот указатель требует дополнительной индирекции. Уж не говоря о том, как это начнёт сыпаться при UB. Последнее, впрочем, скорее, хорошо
источник

а

акварель на мету in cxx.Дискуссионная
акварель на мету
и можно пример где такое может пригодится?
смысл вообще наследование тогда делать
источник

а

а это кто in cxx.Дискуссионная
акварель на мету
но это же всего 16 байт
источник

O

Ofee in cxx.Дискуссионная
акварель на мету
и можно пример где такое может пригодится?
Где угодно, где мы реальный тип знаем на этапе компиляции. В C++ мне пока недоступны средства гарантировать инлайн вызова виртуального метода
источник

Т8

Т-34 85 in cxx.Дискуссионная
ну, то есть, нам надо заюзать перекрытие метода, а этот ебучий раст туда захуярит vtable, когда его не просят?
источник

O

Ofee in cxx.Дискуссионная
Т-34 85
virtual не на ровном месте юзают. Раз взяли, значит, надо. А смирительная рубашка нужна лишь раставчанинам, это они не могут написать ни строчки без бага
constexpr не на ровном месте юзают, но это не значит, что его нельзя использовать в рантайме. Нет, это тот случай, когда ключевые слова полезны и там, и там
источник

а

акварель на мету in cxx.Дискуссионная
Ofee
Вызов через этот указатель требует дополнительной индирекции. Уж не говоря о том, как это начнёт сыпаться при UB. Последнее, впрочем, скорее, хорошо
что такое индирекция?
источник

O

Ofee in cxx.Дискуссионная
акварель на мету
смысл вообще наследование тогда делать
Именно поэтому в C++ извращаются с трейтами. Включая STL
источник

O

Ofee in cxx.Дискуссионная
акварель на мету
что такое индирекция?
Перейти по указателю к таблице виртуальных методов, из неё позвать реальный метод
источник

O

Ofee in cxx.Дискуссионная
Т-34 85
ну, то есть, нам надо заюзать перекрытие метода, а этот ебучий раст туда захуярит vtable, когда его не просят?
Предполагаю, что туда же, куда и C++, с той лишь разницей, что хранить указатель на vtable нужно не каждый раз
источник

Т8

Т-34 85 in cxx.Дискуссионная
Ofee
И? А в Расте — на месте, где принимаешь полиморфный объект. Какая разница?
такая, что он все методы мне сделает виртуальными, а оно мне нахуй не надо
источник

Т8

Т-34 85 in cxx.Дискуссионная
Ofee
Лишний оверхед повсюду
это адепт раста сказал?
источник

O

Ofee in cxx.Дискуссионная
Т-34 85
такая, что он все методы мне сделает виртуальными, а оно мне нахуй не надо
Так ты же сам, явно просишь сделать их виртуальными. А если не просит — не делает. Ты продолжаешь смутные представления о реализации на C++ натягивать на другой язык
источник

Т8

Т-34 85 in cxx.Дискуссионная
Ofee
Ага, то-то basic_string использует трейты, а не наследование...
что использует? И к чему это вообще?
источник

Т8

Т-34 85 in cxx.Дискуссионная
Ofee
Да, максимальная явность. Ужасно же...
нет, максимальный маразм
источник

а

акварель на мету in cxx.Дискуссионная
Ofee
Ага, то-то basic_string использует трейты, а не наследование...
что за трейты
источник

O

Ofee in cxx.Дискуссионная
Т-34 85
это адепт раста сказал?
Это сказало во мне здравомыслие. Будь я адептом Раста, я бы писал на нём и давно игнорировал странных людей в чатиках... А пока я хочу всё самое лучшее от обоих языков и у C++, на мой взгляд, это... немного получается
источник

а

а это кто in cxx.Дискуссионная
Т-34 85
такая, что он все методы мне сделает виртуальными, а оно мне нахуй не надо
То что будет присутствовать VMT не значит, что каждый вызов будет виртуальным, нет.

Где возможно, компилятор сделает статический вызов (может даже инлайнинг), при чём все эти "возможные" места явно видны в коде.
источник

O

Ofee in cxx.Дискуссионная
Т-34 85
что использует? И к чему это вообще?
char_traits — это костыльная попытка эффективно решить проблемы наследования
источник

Т8

Т-34 85 in cxx.Дискуссионная
Ofee
Плюсы так и делают, храня указатель на таблицу, может, стоит выучить примеры реализаций собственного языка для начала?
вот у меня нет ни одного virtual метода. Будет создана vtable для этого класса или нет?
источник