1. Да се опише същността на понятието "виртуална функция".
  2. Кое от следните твърдения за динамичната памет НЕ Е вярно?
    1. Програмата може да задели динамична памет с операцията new.
    2. След изпълнение на оператора delete p;, динамичната памет сочена от указателя p може да бъде използвана не само от същата, но и от други програми.
    3. След завършване на програмата, неосвободената динамична памет остава маркирана като заета и се получава изтичане на памет (memory leak).
    4. Динамична памет, заделена от метод на един клас може да бъде освободена от метод на друг клас.
  3. Напишете шаблон на функция, който проверява дали в един масив от елементи от тип T се среща елементът x от същия тип.
  4. В кой от следните случаи за класа A се генерира системен конструктор по подразбиране?
    1. При дефиниран конструктор A();
    2. При дефиниран конструктор A(int x=0, int y=0);
    3. При дефиниран конструктор A(A const&);
    4. При всички от останалите случаи НЕ се генерира системен конструктор по подразбиране.
  5. Дадени са дефинициите на класове
    class A {
      void f() { cout << "A::f()\n"; }
    public:
      virtual void f(int x) { cout << "A::f(" << x << ")\n"; z = x; }
      void print() const { cout << "z = " << z; }
    protected:
      int z;
    };
    class B : public A {
    private:
      int y;
    public:
      void f() { cout << "B::f()\n"; }
      void print() { cout << "y = " << y; }
    protected:
      void f(int x) { cout << "B::f(" << x << ")\n"; y = x; }
    };
    В кои от следните редове във функцията main e допусната грешка? Какво ще бъде изведено на стандартния изход от редовете, в които няма грешка?
    A a;
    a.f();
    a.f(2);
    a.print();
    B b;
    b.f();
    b.f(3);
    b.print();
    B* pb = &a;
    pb->f();
    pb->f(4);
    pb->print();
    A& ab = b;
    ab.f();
    ab.f(5);
    ab.print();
    a.print();
    b.print();
Последно модифициране: понеделник, 30 юни 2014, 23:39