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é