если у меня указатели родительского типа и типа потомка.
Ну т.е. есть вектор, хранящий std::vector<Child*>, есть указатель Parent* (Child отнаследован от Parent) Могу ли я их просто сравнивать или, по стандарту, я их скастить к одному типу должен?
можете, но они всегда будут не равны
Даже если указывают на один обьект?
они по определению указывают на разные объекты
Да нет же, я же могу апкастить указатель на потомка в указатель родителя.
можете, конечно, просто parent* указывает на base class subobject объекта child
А. А положение этого subobject'а относительно обьекта Child не стандартизировано, полагаю, поэтому если по реализации оно лежит после, то сравнение упадет?
я вот так не вспомню, в стандарте оно или просто общая практика у компиляторов, но в общем случае они идут в том же порядке, в котором перечисляются базовые классы, с поправкой на виртуальные базы
Обсуждают сегодня