Size: a a a

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

2020 March 07

O

Ofee in cxx.Дискуссионная
Т-34 85
вот у меня нет ни одного virtual метода. Будет создана vtable для этого класса или нет?
Нет. В Расте тоже нет
источник

O

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

O

Ofee in cxx.Дискуссионная
Ofee
У тебя есть virtual. Будет создана, если не заинлайнится умным компилятором. Спойлер — он постарается. Но даже если заинлайнит, останется неиспользуемая vtable, ибо ABI
В Расте никакой vtable на этом моменте ещё нет, ведь она нигде и никем не используется
источник

Т8

Т-34 85 in cxx.Дискуссионная
Ofee
Где в QML переопределение метода? Это же был самый главный критерий ООП несколько минут назад
что, сам не смог залезть в исходники? Ну, на, раз такой беспомощный
https://code.woboq.org/qt5/qtdeclarative/src/qml/qml/qqmlengine.h.html
источник

Т8

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

O

Ofee in cxx.Дискуссионная
Т-34 85
что, сам не смог залезть в исходники? Ну, на, раз такой беспомощный
https://code.woboq.org/qt5/qtdeclarative/src/qml/qml/qqmlengine.h.html
Мы говорим о языке QML. Аргументом являются лишь реализация на языке QML. Не реализация самого языка QML, поскольку к теме спора она не имеет отношения.

А сейчас, на этой ноте я объявляю, что и ваши C++, и Rust — лишь жалкая обёртка над ассемблером
источник

Т8

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

O

Ofee in cxx.Дискуссионная
Т-34 85
то есть, раст тут подъебал?
Я не знаю, как в нём с constexpr, я речь о Rust там не вёл
источник

O

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

а

а это кто in cxx.Дискуссионная
Ofee
Мы говорим о языке QML. Аргументом являются лишь реализация на языке QML. Не реализация самого языка QML, поскольку к теме спора она не имеет отношения.

А сейчас, на этой ноте я объявляю, что и ваши C++, и Rust — лишь жалкая обёртка над ассемблером
источник

а

а это кто in cxx.Дискуссионная
:))
источник

O

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

Т8

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

O

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

Т8

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

O

Ofee in cxx.Дискуссионная
Т-34 85
нет, не прошу. Не надо натягивать бзики раста на действительность
Не просишь? Никакой vtable не будет
источник

Т8

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

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

O

Ofee in cxx.Дискуссионная
Т-34 85
"возможно"....
В C++ тоже возможно, но с куда меньшими гарантиями
источник

а

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

O

Ofee in cxx.Дискуссионная
Ofee
В C++ тоже возможно, но с куда меньшими гарантиями
Ваш C++ вообще код может вырезать кусками! Ужас!
источник