ТЕСТ 3

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

Отбележете с "да" операторите за дефиниране на обекти и указатели към обекти от класовете Time и Employee, дадени в учебника на К. Хорстман.

(да) Employee harry("Harry", 20000);
(не) Employee johny("Johny");

Дадена са следната декларация на функция:

void solve(int, int&);

Отбележете верните и неверни оператори, съдържащи извикване на функцията. Предполгаме, че цялата променлива task е дефинирана и има стойност 0.

(да) solve(10, task);
(не) solve(task, 10);

Дадени са следните дефиниции:
 
class Sim {
public:   Sim() { x = 0; }
          int get_x() const { return x; }
private:  int x;
};
Sim t, *ptr_t = &t, &ref_t = t;

Отбележете  с "да" обръщенията към функцията get_x на класа Sim от функция main, които не са синтактични грешки.

(да) t.get_x()
(не) t->get_x()

Даден е вектор и стойности на елементите му:

vector<int> v(2);
v[0] = 1;
v[1] = 3;

Отбележете верни и грешни (относно синтаксис и/или логика) оператори.

(да) cin >> v[0];
(не) cout << v[2];

Дадена са следните дефиниции на класове:

class Animal { ... };
class Dog : public Animal { ... };
 
Определете верните и неверните твърдения за връзките между класовете Animal и Dog:

(да) Класът Dog е производен клас на класа Animal.
(не) Класът Animal е производен клас на класа Dog.

Дадени са файловите променливи:
 
ifstream fi;
ofstream fo;
fstream fio;

и променливите:

int k = 10;
double x = 1.1;
char ch = 'Y';
string s = "No";
 
Отбележете верните оператори с използване на файлови променливи.

(да) fo << x;
(не) fo >> x;
Даден е свързан списък от цели числа, състоящ се от 3 елемента.

class Node2 { Node2 *nn, *pp; int number; };
Node2 *h;

Полето nn съдържа адреса на следващия елемент, а полето pp - адреса на предишния елемент от списъка. h е указател, съдържащ адреса за първия елемент на списъка. Определете верните и неверните твърдения.

(да) h->pp е NULL
(не) (h->pp)->number е цяло число.

Възможно ли е да се предефинира следващата операция за обекти от класа Time, като използваме следната декларация на обикновена функция?

(не) bool operator>(Time);
(да) long operator-(Time, Time);

Възможно ли е да се предефинира следващата операция за обекти от класа Time, като използваме следната декларация на член-функция от класа Time?

(да) bool Time::operator==(Time);
(не) istream& Time::operator>>(Time&);

Може ли даденият ред от програма да бъде дефиниция на деструктор?

(да) Department::~Department() {}
(не) Dept::~Department() {}

Дадена е следната част от програма:

void fun3() { throw runtime_error("RTE" ); }
void fun2() throw(runtime_error) { ... }
void fun1() throw(runtime_error) { fun2(); }
int main()
{ try { fun1(); }
  catch (runtime_error e) { cout<<e.what(); }
  return 0; }
 
Отбележете с "да" онзи оператор от блока на fun2, който ще предизвика отпечатване на екрана на съобщение RTE.

(да) fun3();
(не) fun1();

Дадена е част от програма:

class Vec { int *p;
public:
   class Range {
   public:
     int index;
     Range(int j):index(j) {} };
   int& operator[](int i)
{ if (0<=i && i<100) return p[i]; throw Range(i); }
... };
void do_any(Vec & w);
void do_some(Vec & w);
void f(Vec & v)
{ do_any(v);
  try { do_some(v); }
  catch(Vec::Range r)
  { cerr << "ERROR" << r.index; ... } ...
} ...

Верни ли са следните твърдения?

(да) r е обект от тип Vec::Range.
(не) r е обект от тип Range.