Вопрос о соответствии типов в C ++?

Я читаю текст на C ++ и получаю следующий код:

class A { };
class B : public A { };

void main() {
   A* p1 = new B; // B may be larger than A :OK [Line 1]
   B* p2 = new A; // B may be larger than A :Not OK [Line 2]
}

У меня 2 вопроса:

  1. Я не понимаю, что автор имел в виду, комментируя строки 1 и 2
  2. Почему мы не можем сделать в строке 2?
5
задан Lightness Races with Monica 7 July 2011 в 09:24
поделиться