Size: a a a

2021 April 27

Т8

Т-34 85 in rust_offtopic
нет, компилятор не даст вылезти из иерархии
источник

Т8

Т-34 85 in rust_offtopic
какое нарушение?
источник

TK

Traveller Kolsky in rust_offtopic
В общем случае. Ты не учитываешь пользователей твоих классов, значит, или чужих при проектировании своего.
источник

Т8

Т-34 85 in rust_offtopic
в смысле? Компилятор всегда знает всю иерархию
источник

TK

Traveller Kolsky in rust_offtopic
Код упадёт, если baseClass не MyClass, и сделает неожиданное в противном случае
источник

Т8

Т-34 85 in rust_offtopic
ну так ясен пень, что без проверки ты рискуешь, если не знаешь точно, какой там тип
источник

TK

Traveller Kolsky in rust_offtopic
Получил ты void*. Вопрос: куда его легально даункастнуть, если это вся доступная о нём информация?
источник

TK

Traveller Kolsky in rust_offtopic
Даункасты иногда неизбежны, но их желательно избегать
источник

B

Börgar in rust_offtopic
статик каст к типу, потом динамик касть хоть сколько хочешь
источник

TK

Traveller Kolsky in rust_offtopic
К какому типу?
источник

Т8

Т-34 85 in rust_offtopic
если вся, то никуда. Но обычно таки есть намёки, чем это может являться
источник

TK

Traveller Kolsky in rust_offtopic
И намёки часто не являются полной информацией, а только кажутся
источник

B

Börgar in rust_offtopic
к базовому, но если он не известен, то кастить его во что-либо — UB
источник

Т8

Т-34 85 in rust_offtopic
ну вот в иерархии наследования у тебя полная информация
источник

TK

Traveller Kolsky in rust_offtopic
Она дополняется с написанием кода
источник

Т8

Т-34 85 in rust_offtopic
это не помешает определить, правильный ли тип ты пытаешься подобрать
источник

TK

Traveller Kolsky in rust_offtopic
Представь полиморфизм на даункастах (псевдокодом)
if base is A ...
else if base is B ...
...
else if base is H ...
else throw Exception
источник

TK

Traveller Kolsky in rust_offtopic
И везде даункасты
источник

TK

Traveller Kolsky in rust_offtopic
Противно? Да. Сломается ли код при добавлении I? Сломается.
источник

Т8

Т-34 85 in rust_offtopic
ну да. И что?
источник