ТЕСТ 1

въпросите на теста, един верен отговор (да), и един грешен "отговор" (не)

1. Дадена е следната дефиниция:
    const string pname = "CDE";
Дали следващият оператор е дефиниция на низовата променливата name?
(да) string name = "Neli";
(не) string name = 19;

2. Отбележете с "да" операторите за дефиниране на обекти и указатели към обекти от класовете Time и Employee, дадени в учебника на К. Хорстман.
(да) Employee harry("Harry", 10000);
(не) Time time = new Time();

3. Дадена са следната декларация на функция:
      int mark(int n, int& m);
Отбележете верните и неверни оператори, съдържащи извикване на функцията. Предполгаме, че цялата променлива comma е дефинирана и има стойност 0.
(да) cout << mark(10, comma);
(не) cout << mark(comma, 2);

4. Дадени са следните дефиниции:
      int *pt1, p = 2, *pt2 = new int(1);
Отбележете с "да" (синтактично) верните оператори.
(да) pt1 = new int;
(не) *pt2 = new p;

5. Дадени са следните дефиниции:
      double d=2.5;
      double *p_d1=&d, *p_d2=new double(0.5);
Верни ли са написаните оператори?
(да) p_d1 = new double;
(не) *p_d2 = p_d1;

6. Даден е масив:
     int cats[5] = {5, 10, 5};
Отбележете с "да" изразите със стойност 10.
(да) cats[0] + cats[2]
(не) *(cats+2)

7. Дадени са следните дефиниции:
     int a[3] = {10,20,30}, *pa = a;
Посочете с "да" изразите със стойност 30.
(да) a[0] + a[1]
(не) a[1] + pa[1]

8. Отбележете верните твърдения за класове.
(да) Конструктор без параметри се нарича конструктор по подразбиране.
(не) Всяка член-функция има точно един явен параметър.

9. Отбележете верните декларации на функции, които могат да бъдат конструктори на класове.
(да) Point(double x, double y);
(не) class();

10. Даден е класът
class Product    {
public:
   Product();
   Product(string n, double p, int s);
   void read();
   string get_name() const;
   double get_price() const;
   void print() const;
private:
   string name;
   double price;
   int score;    };
и обект p от този клас , дефиниран в main. Отбележете операторите, които могат да се срещат в блока на функцията main.
(да) Product q;
(не) cout << p.name;

11. Дадени са дефиниции на класа One обекти и указатели от този клас:
class One {
public:
    One() { data = 0; }
    int get_data() { return data; }
private:
    int data;
};
One one, *p_one=&one, &r_one=one;
Верни ли са дадените обръщения към член-функцията get_data от главната функция main?
(да) one.get_data()
(не) one::get_data()

12. Даден е клас Big и обект b.
class Big {
public:
   Big();
   vector<Time> get_t() const { return times; }
   void set_t(Time t, int i) { times[i] = t; }
private:
   vector<Time> times;
};
Big b;
Конструкторът на класа зарежда 10 стойности на вектора times. Отбележете верните оператори от блока на main.
(да) cout << b.get_t()[0].get_hours();
(не) b.get_t().push_back(Time());

13. Отбележете верните/неверните твърдения за вектори и масиви.
(да) Векторът е елемент на езика С++.
(не) Операторът int n[4]; дефинира вектор с 4 елемента.

14. Даден е вектор и стойности на елементите му:
   vector<int> sol(2);
   sol[0] = 1;
   sol[1] = 3;
Отбележете верни и грешни (относно синтаксис и/или логика) оператори.
(да) cout << sol.size();
(не) cout << sol[0] + sol[2];

15. Дадена са следните дефиниции на класове:
      class Point { ... };
      class Circle : public Point { ... };
Определете верните и неверните твърдения за връзките между класовете Point и Circle:
(да) Класът Circle е производен клас на класа Point.
(не) Частните членове на Point са частни членове на Circle.

16. Нека класът D наследява класа B, b е обект от класа Bd е обект от класа D, pb е указател от класа B и pd е указател от класа D. Кои от следните оператори са верни и кои - не?
(да) b = d;
(не) d = b;

17. Дадена са следните дефиниции на класове:
class A {
public:
  void af();
... };
class B : public A {
public:
  void bf();
... };
и обекти oa от клас A и ob от клас B. Отбележете верни/неверни оператори (относно синтаксис) за извикване на член-функциите af и bf от блока на функция main.
(да) oa.af();
(не) oa.bf();

18. Отбележете верните/неверните твърдения за виртуални функции и полиморфизъм.
(да) Извикване на виртуална функция е по-бавно от извикване на невиртуална функция.
(не) Когато член-функция се вика чрез указател (с операция ->), тя винаги е статично свързана.