Test (jazyk ISO C++):
Předpokládejte následující program (uveden bez #include a using namespace std):

  1   class Test {
  2     int i;
  3    public:
  4     Test()               { cout << 'K'; }
  5     virtual void XXX()   { cout << 'V'; }
  6     Test & operator = (const Test & x)
  7       { i = x.i; cout << '='; return *this; }
  8     virtual ~Test()      { cout << 'D'; }
  9   };
 10
 11   class T : public Test {
 12     Test obj;            // vnořený objekt
 13    public:
 14     T()                  { cout << '1'; }
 15     void XXX()           { cout << '2'; }
 16     ~T()                 { cout << '3'; }
 17   };
 18
 19   void f(T p1, T & p2) {
 20     p1.XXX();
 21     Test Pole[2];
 22     p2 = p1;
 23   }
 24
 25   int main() {
 26     Test *p = new T;               // @@@@@@
 27     p->XXX();
 28     delete p;
 29     T obj;                         // ******
 30     f(obj, obj);
 31     cout << '-';
 32   }

 a)  Napiąte, co se vytiskne při provedení main().
 b)  Co se vytiskne, změníme-li řádek označený // ****** na:
       T &obj = * new T;
 c)  Co se vytiskne, nebude-li destruktor třídy Test virtuální?
       ~Test() { cout << 'D'; }
 d)  Co se vytiskne, změníme-li řádek označený // @@@@@@ na:
       T *p = new T;
 e)  Co se vytiskne, nebude-li XXX virtuální?

 Řeąení (5 řádků) _stručně komentujte_

 Poznámky: - je vhodné zapisovat jen rozdíly od a), uąetříte čas
           - pokud píąete vąe, _podtrhněte rozdíl_ od a)
           - body b,c,d,e jsou na sobě nezávislé