Хелпикс

Главная

Контакты

Случайная статья





Вопросы для самоконтроля по курсу «Технология программирования»



Вопросы для самоконтроля по курсу «Технология программирования»

 

  1. Как должна быть объявлена локальная переменная функции, чтобы она сохраняла свое значение между вызовами функции?

 

  1. Как получить доступ к глобальной переменной с тем же именем, что и переменная в текущей области действия?
  2. Какие способы передачи параметров в функции существуют в C++?
  3. Какими значениями инициализируются локальные переменные?
  4. Будет ли компилироваться программа, в которой объявлены две функции: void foo(int x) и int foo()? Ответ объяснить.
  5. Чему равны элементы массива a[2] и a[3], объявленного следующим образом:
    int a[4] = {1, 2, 3 }; ?
  6. Имеется объявление int a[4], *p = a, *q = &a[1]; Чему равен результат выражения (q == ++p) ?
  7. Имеется объявление int a[4] = {1, 2, 3, 4}, *p = &a[1]. Чему равно значение p[1]?
  8. Какими значениями инициализируются поля экземпляра класса?
  9. Какой вид конструктора должен быть определен в классе A для возможности объявления переменной – массива экземпляров класса: A a[10]; ?
  10. Сколькими способами можно перегрузить конструктор и деструктор?
  11. Сколько раз вызывается деструктор класса A в данной программе:

A foo(A a) {

A r = a;

return r;

}

 

void main() {

A a1, a2;

a2 = foo(a1);

}

  1. Сколько раз вызывается деструктор класса A в данной программе:

A foo(A a) {

return A(a);

}

 

void main() {

A a1, a2;

a2 = foo(a1);

}

  1. Противоречит ли наличие дружественных классу функций принципу инкапсуляции? Ответ объяснить.
  2. Какие ошибки (если есть) присутствуют в следующем объявлении класса:

class A {

int f = 0;

A(int _f) : f(_f) {}

void ~A() { f = 0;}

};

  1. Какие ошибки (если есть) присутствуют в следующем объявлении класса:

class A {

int f = 0;

A(int _f) : f(_f) {}

A(A src) { f = src.f;

};

  1. Можно ли (если да, то как) перегрузить оператор присваивания при помощи: 1) объявления метода; 2) объявления (дружественной) функции ?
  2. Можно ли (если да, то как) перегрузить оператор сложения при помощи: 1) объявления метода; 2) объявления (дружественной) функции ?
  3. Как перегрузить операцию преобразования типа B в тип A для класса А?
  4. Приведите пример композиции и наследования для пары классов A и B.
  5. В какой последовательности вызываются операторы из списка инициализации полей?
  6. Какие функции не наследуются автоматически?
  7. Имеется объявление:

class A {

public:

int fa;

};

class B : A {

int fb1;

protected:

int fb2;

public:

int fb3;

};

B b;

К каким полям имеется доступ через объект b?

  1. Наследуются ли статические функции-члены класса? Могут ли они быть виртуальными?
  2. В чем состоит отличие в вызове виртуальной и невиртуальной функции при обращении к заданному объекту по имени и операции доступа к элементу точка?
  3. В чем состоит отличие в вызове виртуальной и невиртуальной функции при обращении к заданному объекту с помощью указателя базового класса (или ссылки)?
  4. Определите шаблонный класс, обеспечивающий работу с многомерными массивами.
  5. Определите оператор индексирования [] для шаблонного класса, обеспечивающего работу с многомерными массивами.
  6. Имеется объявление из п.23. Какая строка будет выведена при выполнении следующего блока кода:

try {

throw B;

}

catch(A a) {

std::cout << “A object caught” << std::endl;

}

catch(B b) {

std::cout << “B object caught” << std::endl;

}

  1. Дайте определение класса, позволяющего создание объекта в единственном для программы экземпляре.


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.