to
FinchТы вот это
mas = new tB(*(static_cast<tB *>(c.mas)));
на каком основании делаешь? Где гарантия, что c.mas ссылается реально на объект tB, а не на tA (берем общий случай, а не жестко тот код, что написан, где все слены классов приватные и доступа к ним нет никаго, даже косвенного)?
to
kds if (x==0) {
mas = new tA();
} else {
mas = new tB();
}
*mas = *c.mas
В общем случае так делать нельзя, проблема та же что и у
Finch. Дело вот в чем, если c.mas ссылается на объект типа tA, И так случается, что x НЕ равен 0, то тут *mas = *c.mas будут проблемы (в твоем случае j у нового объекта mas типа tB будет иметь случйное значение).
Все написанное выше относится не к жестко заданному коду, описанному в вопросе, а к его реальному использованию и развитию.