Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП Тесты с ОФОРМЛЕНИЕМ v300 РогозикАС.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
102 Кб
Скачать
☆

4 Семестр

  1. Реализация механизма сокрытия информации

  2. Конструкторы. Основные свойства и правила использования конструкторов.

  3. Конструктор с параметрами

  4. Конструктор копирования.

  5. Конструктор по умолчанию

  6. Деструкторы. Правила использования деструкторов.

  7. Оператор new и delete

  8. Косвенная адресация.

  9. Функции манипулирования памятью файла alloc.h Преимущества использования оператора new перед malloc():

  10. Механизм «функции-друга».

  11. Свойства и правила использования структур и объ­единений.

  12. Перегрузка функций-членов класса .

  13. Отличия перегрузки операций метода класса и функции- друга

  14. Перегрузка операторов.

  15. Иерархии классов. Наследование

  16. Механизм виртуальных функций. Свойства и правила использования

  17. Абстрактные классы, Виртуальное наследование.

  18. Шаблоны классов.

  19. Шаблоны функций.

  20. Исключения и их обработка.

  21. Ситуация развер­тывания стека.

  22. Обработчики исключительных ситуаций catch.

  23. Традиционные методы об­работки ошибок.

  24. Контейнерные классы.

  25. Итераторы.

  26. Реализация контейнеров

  27. Операции контейнера

  28. Последовательный контейнер. Список

  29. Последовательный контейнер. Вектор

  30. Последовательный контейнер. Очередь

  31. Адаптеры контейнеров. Стек.

  32. Ассоциативные контейнеры.

  33. Потоки ввода-вывода.

  34. Двоичные файлы.

Перечень рекомендуемых литературных источников

  1. Астахова И.Ф. Язык C/C++: Учеб. Пособие / И. Ф. Астахова, С. В. Власов, В.В. Фертиков, А.В. Ларин. – Мн.: Новое знание, 2003. – 203 с.

  2. Иванова, Г.С. Объектно-ориентированное программирование– 2-е изд., перераб. и доп. – Москва: Изд-во МГТУ имени Н.Э. Баумана, 2003. – 368с. –

  3. Ишкова Э. А. C++. Начала программирования. – М.: ООО «Бином-Пресс», 2004. – 368 с.

  4. Культин Н. Б. C/C++ в задачах и примерах. – СПб.: БХВ-Питербург, 2004. – 288 с.

  5. Кьоу, Дж Объектно-ориентированное программирование – Санкт-Петербург Питер, 2005. – 237 с.:

  6. Лаптев, В.В. С++ Объектно-ориентированное программирование. Задачи и упражнения – Санкт-Петербург Питер, 2007. – 287 с.:

  7. Луцик, Ю.А. Объектно-ориентированное программирование на языке C++: учеб.пособие /Ю.А.Луцик, В.Н.Комличенко,-Минск: Бгуир,2008

  8. Мейерс, С. Эффективное использование С++ 35 новых рекомендаций по улучшению ваших программ и проектов /– Москва: Питер: ДМК Пресс, 2006. – 296 с.

  9. Мейерс, С. Эффективное использование С++ 50 новых рекомендаций по улучшению ваших программ и проектов – Москва: Питер: ДМК Пресс, 2006. – 235 с.

  10. Павловская Т. А. C/C++. Программирование на языке высокого уровня-СПб.: Питер, 2005.-461 с.

  11. Павловская, Т. А. C/C++. Структурное программирование: Практикум /Т. А. Павловская, Ю.А. Щупак. - СПб.: Питер, 2004. – 239 с.

  12. Павловская, Т. А. С++. Объектно-ориентированное программирование: практикум – Санкт-Петербург: Питер,2006.-264 с. :

  13. Павловская, Т. А. С++. Структурное и объектно-ориентированное программирование: практикум – Санкт-Петербург: Питер,2010.-347 с.

  14. Страуструп, Б. Дизайн и эволюция С++– Москва : Питер : ДМК Пресс, 2007. – 444 с.

  15. Холзнер, С.Visual C++ 6 – СПб. : Питер, 2006. – 569с. :

  16. Шиманович Е.Л. С/С++ в примерах и задачах- Мн.: Новое знание,2004.-528 с.

УТВЕРЖДАЮ

Заведующий кафедрой ИСТ

_____________О.И. Наранович

подпись

«____»________________20__ г.,

Протокол №_____

Тестовые задания

по _______объектно-ориентированному программированию_____

дисциплина

для специальности (-ей):

информационные системы и технологии

(название специальности)

________2______курс _______3, 4__________семестр__________________

____________________________дневное отделение______________________

(название факультета (ФЗО, ФНО))

Количество тестовых заданий для представления тестируемому:

Открытой формы:

задания на выбор одного верного ответа___279___

задания на выбор нескольких верных ответов___21___

задания на установление соответствия__0____

задания на установление правильной последовательности__0___

  1. Какое значение, по умолчанию, возвращает программа операционной системе в случае успешного завершения?

a) Программа не возвращает значение

b) 0

c) 1

d) -1

  1. Программа, переводящая входную программу на исходном языке в эквивалентную ей выходную программу на результирующем языке, называется:

a) транслятор

b) компилятор

c) сканер

d) интерпретатор

  1. Что такое единица трансляции? Какое из утверждений наиболее верное?

a) любой статический член данных

b) объект

c) объявление функции

d) файл c исходными кодами и заголовками

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

а) < >

b) ( )

c) begin end

d) { }

  1. Когда выполняются директивы препроцессора?

а) после компиляции, но до выполнения кода

b) во время выполнения кода

c) до компиляции

d) во время компиляции

  1. Какая директива используется для подключения к программе заголовочных файлов?

a) #include

b) #define

c) #undef

d) #ifndef

  1. Какая директива определяет подстановку в тексте константы, макроса и т.д. программы?

a) #undef

b) #include

c) #ifdef

d) #define

  1. Чему равно значение переменной res ?

#define F(x) (2*x*x)

int main() {

int a = 1, b = 2;

int res = F(a + b);

return 0;

}

a) ошибка компиляции

b) ошибка времени выполнения

c) 6

d) 18

  1. Директивы условной компиляции #if, #ifdef и #ifndef применяются для:

a) вставки содержимого указанного файла

b) исключения компиляции отдельных частей программы

c) удаления определенного символа

d) определения подстановки в тексте программы

  1. Что будет выведено на экран?

#include <iostream>

int main() {

#define MyConst 1;

#define Debug

int k = 10;

#if !defined Debug && defined MyConst

k++;

#endif

std::cout<<k;

return 0;

}

a) 11

b) ошибка компиляции

c) 10

d) ошибка выполнения

  1. Для комментирования текста программы используются следующие символы:

a) //

b) /* */

c) */ /*

d) // \\

  1. К целочисленным типам данных в С++ относятся:

a) int

b) integer

c) float

d) double

  1. К типами с плавающей точкой в С++ относятся:

a) char

b) float

c) int

d) real

  1. Относится ли тип char к целочисленным типам?

a) Да

b) Нет

  1. Если переменная типа bool преобразуется в число, чем становится значение false?

a) 1

b) 0

c) 1

d) значение не определено

  1. Спецификаторы типа, уточняющие внутреннее представление стандартного типа это:

a) short

b) long

c) signed

d) char

  1. Спецификаторы типа, уточняющие диапазон значений стандартного типа это:

a) short

b) int

c) signed

d) unsigned

  1. Чему будет равно значение выражения 3/5*5 в с++?

a) 1

b) 0.12

c) 0

  1. Чему будет равно с после выполнения следующего кода?

int a(0);

int b(1);

int c(a+b);

a) 0

b) 1

c) -1

  1. Чему будет равно a после выполнения следующего кода?

int а = 7;

a /= 2;

a) 7

b) 3

c) результат не определен

d) 3.5

  1. Если для переменной указан класс памяти auto, то это значит, что переменная:

a) автоматическая локальная и память выделяется ей при входе в блок и освобождается при выходе из него

b) глобальная и находится в другом месте программы

c) статическая и существует только в пределах той функции, где определена и сохраняет своё значение и при последующих вызовах этой функции

  1. Если для переменной указан класс памяти static, то это значит, что переменная:

a) автоматическая локальная и память выделяется ей при входе в блок и освобождается при выходе из него

b) глобальная и находится в другом месте программы

c) статическая и существует только в пределах той функции, где определена и сохраняет своё значение и при последующих вызовах этой функции

  1. Если для переменной указан класс памяти extern, то это значит, что переменная:

a) автоматическая локальная и память выделяется ей при входе в блок и освобождается при выходе из него

b) глобальная и находится в другом месте программы

c) статическая и существует только в пределах той функции, где определена и сохраняет своё значение и при последующих вызовах этой функции

  1. Константа в C++ не может быть:

a) целого типа

b) вещественного типа

c) символьного типа

d) нет правильного ответа

  1. Для создания именованной константы используется ключевое слово:

a) short

b) const

c) extern

d) static

  1. Целые константы не могут быть:

a) десятичными

b) восьмеричными ( начинаются с 0 )

c) шестнадцатеричными ( начинаются с 0x )

d) нет правильного варианта ответа

  1. Перечислимые константы вводятся с помощью ключевого слова:

а) namespace

b) enum

c) new

d) static

  1. Перечислите все правильные способы объявления локальной константы в блоке кода.

a) #const size = 5;

b) const int size;

c) define const size 5

d) const int size = 5;

  1. Стандартные потоки ввода и вывода данных, которые определенны в библиотечном файле iostream.h — это:

a) printf и scanf

b) cin и cout

c) new и delete

d) malloc и free

  1. Что выведет следующая программа:

#include <iostream>

#include <stdio.h>

int main() {

std::cout << printf("boom!");

return 0;

}

a) ошибка компиляции (библиотека stdio входит только в стандартную библиотеку языка С)

b) printf("boom!")

c) boom!

d) нет правильного ответа

  1. Функции ввода/вывода, описанные в библиотечном файле stdio.h — это:

a) printf и scanf

b) cin и cout

c) new и delete

d) malloc и free

  1. Какой из следующих операторов — оператор сравнения двух переменных?

a) :=

b) =

c) ==

d) ===

  1. Операция ++ — это:

a) увеличение на единицу

b) уменьшение на единицу

c) остаток от деления

d) умножение с присвоением

  1. Операция -- —это:

a) увеличение на единицу

b) уменьшение на единицу

c) остаток от деления

d) деление с присвоением

  1. Каков результат работы следующего фрагмента кода?

int x = 5;

int a = ++x;

int b = x++;

a) a = 6, b = 6, x = 6

b) a = 6, b = 7, x = 7

c) a = 6, b = 7, x = 6

d) a = 6, b = 6, x = 7

  1. Каков результат работы следующего фрагмента кода?

int x = 3;

int a = --x;

int b = x--;

a) a = 2, b = 2, x = 2

b) a = 2, b = 1, x = 1

c) a = 2, b = 2, x = 1

d) a = 3, b = 2, x = 1

  1. Что выведет данный фрагмент кода:

int i = 0;

i++++++++++++++++++++; // 20 плюсов

cout << i++ << endl;

a) Произойдёт ошибка времени выполнения

b) Программа не скомпилируется

c) 10

d) 11

  1. Какое ключевое слово используется для описания пространства имен?

а) namespace

b) std

c) include

d) const

  1. Скомпилируется ли следующий код:?

int a = 0;

double b = 0.0;

namespace space1

{

int a=1;

double b=1.0;

}

namespace space2

{

int a=2;

double b=2.0;

}

int main()

{

int a=0;

double b=0.0;

return 0;

}

a) Да

b) Нет

  1. Заголовочный файл стандартной библиотеки языка программирования С, разработанный для выполнения простых математических операций — это:

a) math.h

b) iostream.h

c) stdio.h

d) fstream.h

  1. Общий вид оператора if:

a) if оператор1; [else оператор2;]

b) if (выражение) оператор1; [else оператор2;]

c) if (выражение, оператор1);

d) if оператор1 (выражение); [else оператор2;]

  1. Какие ключевые слова входят в состав конструкции "если":

a) then

b) Else

c) elseif

d) if

  1. Каким будет значение переменной a в результате выполнения данного фрагмента кода:

int a = 5 > 6 ? 8 : 0;

a) 5

b) 0

c) 8

d) 6

  1. Для чего используется оператор if:

a) для организации многократно повторяющихся вычислений

b) для разветвления процесса вычислений на несколько направлений

c) для разветвления процесса вычислений на 2 направления

d) это оператор возврата из функции

  1. Логическая операция И — это:

a) &

b) &&

c) !=

d) ||

  1. Логическая операция ИЛИ — это:

a) |

b) !=

c) ||

d) &&

  1. Чему будет равна переменная a, после выполнения этого кода?

int b = 2;

int с = 3;

int a = b & c;

a) 3

b) 2

c) 1

d) 4

  1. Чему будет равна переменная a, после выполнения этого кода?

int b = 2;

int с = 3;

int a = b | c;

a) 3

b) 2

c) 1

d) 4

  1. Чему будет равна переменная a, после выполнения этого кода?

int b = 2;

int с = 3;

int a = b ^ c;

a) 3

b) 2

c) 1

d) 4

  1. Что выведет следующий код?

#include <iostream>

int main()

{

int i = 3;

int c = 0;

while(i)

{

++c;

i ^= i & -i;

}

std::cout << c;

return 0;

}

a) 2

b) 3

c) ошибка компиляции

d) 1

  1. Какие операторы цикла существуют в C++?

a) foreach

b) for

c) repeat until

d) switch

  1. Цикл с предусловием — это:

a) for

b) while

c) do … while

d) break

  1. Цикл с постусловием — это:

a) while

b) for

c) do … while

d) break

  1. Цикл с параметром — это:

a) while

b) for

c) do … while

d) break

  1. Цикл while имеет структурный вид:

a) while ( выражение ) оператор

b) while ( выражение ) оператор 1, else [оператор 2]

c) while ( выражение 1), else ( выражение 2)

d) while оператор 1, else [оператор 2]

  1. Цикл while начинается … :

a) с вычисления выражения, а затем управление передаётся следующему за циклом оператору

b) с выполнения простого или составного оператора, а затем вычисляется выражение

c) с передачи управления на начало следующей итерации

d) с вычисления выражения, если оно истинно, то выполняется оператор цикла

  1. Цикл do … while начинается … :

a) с вычисления выражения, а затем управление передаётся следующему за циклом оператору

b) с выполнения простого или составного оператора, а затем вычисляется выражение

c) с передачи управления на начало следующей итерации

d) с вычисления выражения, если оно истинно, то выполняется оператор цикла

  1. Цикл do … while имеет вид:

a) while ( выражение ) оператор

b) do оператор while выражение

c) do выражение while оператор

d) do оператор1 while оператор2

  1. Цикл for имеет вид:

a) for (инициализация; оператор ) выражение

b) for (инициализация; модификации; оператор ) выражение

c) for (инициализация; выражение; модификации) оператор

d) for (инициализация; выражение) оператор

  1. Операторы передачи управления – это следующие операторы:

a) goto, break, continue, return

b) goto, break, continue

c) goto, switch, continue, return

d) goto, break, return, do break

  1. Оператор break — это оператор … :

a) выхода из цикла

b) возврата из функции

c) безусловного перехода

d) перехода к следующей итерации цикла

  1. Оператор continue — это оператор … :

a) выхода из цикла

b) возврата из функции

c) безусловного перехода

d) перехода к следующей итерации цикла

  1. Оператор return — это оператор … :

a) перехода в определённую точку программы

b) возврата из функции

c) безусловного перехода

d) перехода к следующей итерации цикла

  1. Что сгенерирует на выходе приведённый ниже код программы:

int x = 10;

while (x > 0)

{

cout << x << endl;

x = x - 3;

}

getch();

a) 7,4,1

b) 10,7,4,1

c) 7

d) выдаст ошибку

  1. Что сгенерирует на выходе приведённый ниже код программы:

int x = 10;

while (x < 0)

{

cout << x << endl;

x = x - 3;

}

getch();

1) 0

2) 1

3) пустая консоль

4) выдаст ошибку

  1. Что сгенерирует на выходе приведённый ниже код программы:

int x = 10;

do

{

cout << x << endl;

x = x - 3;

} while (x > 0);

1) 7

2) 10

3) 10,7,4,1

4) выдаст ошибку

  1. Что будет выведено при выполнении следующего фрагмента кода:

int x;

while(x < 100)

{

cout << x << " ";

x++;

}

a) 1 2 3 4 ... 99 100

b) 0 1 2 3 4 ... 99 100

c) 0 1 2 3 4 ... 99

d) результат не определен

  1. Что сгенерирует на выходе приведённый ниже код программы:

int x = 10;

do

{

cout << x << endl;

x = x - 3;

} while (x < 0);

a) 10

b) 7

c) 10,7,4,1

d) выдаст ошибку

  1. Чему будет равно значение i после выполнения фрагмента?

int i = -3, a = -3;

while(a - i)

a = i++;

a) -3

b) 4

c) 0

d) 3

  1. Оператор switch (переключатель) предназначен для:

a) Для организации многократно повторяющихся вычислений

b) Для разветвления процесса вычислений на несколько направлений

c) Для разветвления процесса вычислений на 2 направления

d) Оператор возврата из функции

  1. Каков результат работы следующего фрагмента кода?

int x = 0;

switch(x)

{

case 1: cout << "Один"; break;

case 0: cout << "Ноль"; break;

case 2: cout << "Привет мир"; break;

}

a) Привет мир

b) Ноль

с) Ноль Привет мир

d) Один

  1. Каков результат работы следующего фрагмента кода?

int x = 10;

switch(x)

{

case 1: cout << "Один"; break;

case 0: cout << "Ноль"; break;

case 2: cout << "Привет мир"; break;

default: cout << "Нет совпадений";

}

a) Привет мир

b) Ноль

с) Нет совпадений

d) Один

  1. Что выведется на экран в результате выполнения следующего фрагмента кода:

int i = 2;

switch (i) {

case 0: cout << 0;

case 1: cout << 1;

case 2:

case 3: cout << 3;

default: cout << 4;

}

a) пусто

b) 3

c) 34

d) 0134

  1. Каков результат работы следующего фрагмента кода?

for (int i = 0; i != 5; i++)

{

cout << i;

break;

}

a) 0

b) 0, 1, 2, 3, 4

c) 0, 1, 2

d) нет правильного ответа

  1. Каков результат работы следующего фрагмента кода?

for (int i = 0; i != 5; i++)

{

cout << i;

continue;

}

a) 0

b) 0, 1, 2, 3, 4

c) 0, 1, 2

d) нет правильного ответа

  1. Чему будет равна переменная a, после выполнения этого кода?

int a; for(a = 0; a < 10; a++) {}

a) 9

b) 10

c) 8

d) нет правильного ответа

  1. Чему будет равна переменная a, после выполнения этого кода?

int a; for(a = 10; a > 0; a--) {}

a) 0

b) 2

c) 1

d) нет правильного ответа

  1. Что напечатает следующий код:

#include <iostream>

int main()

{

int n = 10;

for(;n--;) {

std::cout << n;

}

return 0;

}

a) код не скомпилируется

b) возникнет ошибка времени выполнения

c) цикл будет продолжаться до бесконечности

d) 9876543210

  1. Чему будет равно a в строке // 1?

int a = 0;

for (;;)

{

if (a) break;

a--;

}

a; // 1

a) -1

b) 1

c) выполнение программы никогда не дойдет до строки // 1 из-за бесконечного цикла

d) этот код не скомпилируется, т.к. содержит синтаксические ошибки

  1. Укажите правильное объявление одномерного массива:

a) int mas;

b) mas{10};

c) int mas[10];

d) array mas[10];

  1. Если элементов в массиве больше, чем инициализаторов, то … :

a) элементы не записываются

b) выдаётся ошибка

c) элементы обнуляются

d) происходит расширение памяти, и массив записывается полностью

  1. Укажите правильный вариант инициализации массива:

a) int mas[3] = {1, 2, 3};

b) int mas[3] = {1, 2, 3, 4};

c) int mas[3] = {"1", 2, 3};

d) int mas{3} = {1, 2, 3};

  1. Укажите правильное объявление двумерного массива:

a) int mas[2, 3]

b) int mas[2],[3]

c) int mas[2][3]

d) двумерные массивы объявлять нельзя

  1. Элементы массива нумеруются с …

a) 1

b) 0

c) 2

d) -1

  1. Какой максимальный индекс элементов у следующего массива: int mas[100]:

a) 100

b) 101

c) 99

d) 98

  1. Указатель предназначен … :

a) для хранения ссылок на объекты

b) для хранения значений переменной

c) для хранения адресов областей памяти

d) нет правильного варианта ответа

  1. Что из перечисленного является объявлением указателя в С++?

a) int* a;

b) int* &a;

c) int a&;

d) int &a;

  1. Какой оператор в C++ используется для взятия адреса?

a) ^

b) &

c) &&

d) *

  1. Что выведет cout?

#include <iostream>

using namespace std;

int main() {

int a = 3;

int b = 4;

int c = 5;

int &d = b;

a = b = c;

cout << a << b << c << d << endl;

return 0;

}

a) 3334

b) 4444

c) в коде имеются ошибки

d) 5555

  1. В C++ существуют следующие виды указателей:

a) указатель на объект

b) указатель на функцию

c) указатель на тип void

d) нет правильного варианта ответа

  1. Укажите верный способ инициализации указателя:

a) int* p = 5;

b) int a = 5; int* p = &a;

c) int a = 5; int* p &(a);

d) нет правильного варианта ответа

  1. Что выведет следующая программа:

#include "stdio.h"

int main() {

int * var = new int(2);

*var*=2;

printf("%d", *var);

return 0;

}

a) 2

b) Возникнет ошибка компиляции

c) 0

d) 4

  1. Что из перечисленного верно по отношению к ссылкам и указателям?

a) в отличие от указателей, ссылки нельзя изменять и обязательно необходимо инициализировать при определении или в списке инициализации конструктора.

b) ссылки ничем не отличаются от указателей. Это просто более удобная форма записи указателей

с) ссылки нельзя использовать в списке аргументов функции

d) в отличие от указателей, нельзя изменять значение поля, на которое ссылается ссылка

  1. Что из себя представляет динамическое выделение памяти?

а) память под объект (переменную) выделяется каждый раз при обращении к переменной

б)память под объект (переменную) может выделяться не сразу, а в процессе работы программы, освобождение памяти производится автоматически после завершения программы

в) память под объект (переменную) может выделяться не сразу, а в процессе работы программы, освобождение памяти производится вручную

  1. Укажите операции для манипулирования динамической памятью в С++:

a) new, delete

b) throw

c) calloc(), free(), malloc()

d) нет правильного ответа

  1. Укажите функции для манипулирования динамической памятью в С++:

a) calloc(), free(), malloc()

b) get_memory(), free_memory()

c) new, delete

d) нет правильного ответа

  1. Операция определения размера типа или объекта в байтах — это:

a) sizeof

b) length

c) getlength

d) нет правильного варианта ответа

  1. Освобождение памяти, выделенной с помощью операции new, должно выполняться с помощью:

a) free()

b) delete

c) delete[]

  1. Освобождение памяти, выделенной с помощью функции malloc/calloc, должно выполняться с помощью:

a) free()

b) delete

c) delete[]

  1. Освобождение памяти, выделенной с помощью операции new[], должно выполняться с помощью:

a) free()

b) delete

c) delete[]

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

а) int *****

b) int ***

c) int ****

d) четырехмерный динамический массив создать нельзя

  1. При выделении памяти под массив, указатель указывает:

a) на первый элемент массива

b) на весь массив элементов целиком

c) на последний элемент массива

d) нет правильного варианта ответа

  1. Что напечатает следующий код:

#include "stdio.h"

int main() {

int * param1 = new int(2);

int param2 = 2;

int * reference = &param2;

printf("%d", *reference == *param1);

return 0;

}

a) true

b) 1

c) false

d) 0

  1. Какую операцию с указателями невозможно выполнить:

a) инкремент(++)

b) разадресации

c) умножения

d) приведения типов

  1. При истинности какого из приведенных высказываний имеет смысл вычитание указателей?

a) оба указателя указывают на объекты одного и того же типа

b) оба указателя получены с помощью операции new

c) к обоим указателям обращаются с помощью операции &

d) оба указателя указывают на элементы одного и того же массива

  1. Укажите, как можно обратиться к элементу динамического массива p:

a) p[5], *(p + 5)

b) p->5, (*p)->5

c) (*p + 5)

d) нет правильного варианта ответа

  1. Функция — это:

a) последовательность описаний и операторов

b) именованная последовательность описаний и операторов

c) параметр, возвращающий значение

d) нет правильного варианта ответа

  1. Когда происходит выполнение функции:

a) на завершающем этапе работы программы

b) в момент объявления

c) в момент вызова

d) нет правильного варианта ответа

  1. Как правильно вызвать эту функцию?

int sum(int a, int b)

{

return a + b;

}

a) sum(7, 8);

b) sum(int a = 7, int b = 8);

c) int sum(int a = 7, int b = 8);

d) sum(int 7, int 8);

  1. Объявление функции (прототип, заголовок, сигнатура) задает ее … :

a) имя, тип возвращаемого значения, список передаваемых параметров

b) имя, тип возвращаемого значения, список передаваемых параметров, тело функции

c) имя и тип возвращаемого значения

d) нет правильного варианта ответа

  1. Определение функции содержит … :

a) объявление и тело функции

b) только тело функции

c) только объявление

d) нет правильного варианта ответа

  1. Какая область видимости у следующей функции:

extern int f(int a, …) {…}

a) видимость только в пределах модуля, в котором определена функция

b) глобальная видимость во всех модулях программы

  1. Какая область видимости у следующей функции:

static int f(int a, …) {…}

a) видимость только в пределах модуля, в котором определена функция

b) глобальная видимость во всех модулях программы

  1. Тип возвращаемого функцией значения может быть:

a) любым

b) любым, кроме массива и функции

c) любым, кроме массива

d) любым, кроме функции

  1. Если функция не должна возвращать значение, указывается тип:

a) null

b) тип не указывается

c) void

d) нет правильного варианта ответа

  1. Тип возвращаемого функцией значения может быть указателем на массив или функцию?

a) Да

b) Нет

  1. Механизм возврата из функции в вызвавшую ее функцию реализуется оператором:

a) break

b) goto

c) return

d) finally

  1. Какое значение вернет функция:

int f() {

return 4,(5),6;

}

a) Результат не определен

b) 5

c) 4

d) 6

  1. Что выведет на экран следующая программа?

#include <iostream>

void qwer(int &param) {

param += 15;

}

int main(void) {

int a = 14;

void (*realFunction)(int &) = &qwer;

realFunction(a);

std::cout << a;

return 0;

}

a) программа не скомпилируется

b) 15

c) 29

d) 14

  1. Можно ли возвращать из функции указатель на локальную переменную (объявленную в функции)?

a) Да

b) Нет

  1. Параметры, перечисленные в заголовке описания функции, называются:

a) фактическими параметрами

b) формальными параметрами

c) нет правильного ответа

  1. Параметры, записанные в операторе вызова функции, называются:

a) фактическими параметрами

b) формальными параметрами

c) нет правильного ответа

  1. Какие существуют способы передачи параметров в функцию?

a) только по значению

b) только по адресу

c) по значению и по адресу

d) нет правильного ответа

  1. Существует ли в C++ разница между объявлением функции c пустыми скобками - func(), и объявлением с использованием ключевого слова void - func(void)?

a) Да

b) Нет

  1. Скомпилируется ли следующий код:

int foo();

char foo();

a) Да

b) Нет

  1. Что будет выведено на экран в результате выполнения программы?

#include <iostream>

void func(int num);

int main(void)

{

func(5);

return 0;

}

void func(int num)

{

if(num)

func(num-1);

std::cout << num;

}

a) 543210

b) 012345

c) программа не скомпилируется

d) программа приведет к переполнению стека

  1. Что напечатает программа:

#include <stdio.h>

void ampersand( int n, int &k );

int main()

{

int n=5;

int k=10;

ampersand( n, k );

printf( "n=%d &k=%d\n", n, k );

return 0;

}

void ampersand( int n, int &k )

{

k -= 5;

--n;

}

a) n=5 &k=5

b) Произойдет ошибка во время компиляции

c) n=5 &k=<адрес переменной в памяти>

d) n=5 &k=10

  1. Скомпилируется ли следующий код?

namespace {

void Foo() { }

}

a) Нет

b) Да

  1. Если требуется запретить изменение параметра внутри функции, используется модификатор?

a) const

b) static

c) inline

d) extern

  1. Что делает инструкция break; в следующем фрагменте кода:

void function1() {

if(1) {

break;

function2();

}

}

a) выполняет выход из function1

b) ничего (игнорируется)

c) приводит к синтаксической ошибке

d) выполняет выход из if-блока

  1. Массив в функцию всегда передается:

a) по адресу

b) по значению

c) по ссылке

d) нет правильного ответа

  1. Что выведет эта программа?

#include <iostream>

static const char s[][10] = {

"foo",

"bar",

};

void test(const char s[][10]) {

using std::cout;

for (int i = 0; i < 2; i++) {

cout << s[i];

}

}

int main() {

test(s);

}

a) возникнет ошибка во время выполнения

b) foo

c) bar

d) foobar

  1. Что называют перезагрузкой функции?

a) использование нескольких функций

b) использование нескольких функций с одним и тем же именем, но с различными типами параметров

с) использование нескольких функций с одним и тем же именем

d) нет правильного варианта ответа

  1. Какой результат работы программы?

#include <iostream>

using namespace std;

void f(double) { cout<<"f1"<<endl; }

void f(const int) { cout<<"f2"<<endl; }

void f(int &) { cout<<"f3"<<endl; }

void main(void) {

int n = 1;

double b = 2;

f(n);

f(b);

}

a) f3 f1

b) f2 f1

c) ошибка компиляции

d) f2 f3 f1

  1. Что означает конструкция throw() в объявлении функции? (например void f() throw();)

a) такое объявление не корректно, произойдет ошибка времени компиляции

b) такое объявление указывает, что функция может сгенерировать исключения только из стандартной библиотеки или же исключения такого же типа как и параметры функции.

c) такое объявление указывает, что функция может сгенерировать любое исключение

d) такое объявление указывает, что функция не должна генерировать исключения

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

a) Да

b) Нет

  1. Что выведет программа?

#include <iostream>

using namespace std;

void print(int x, int y) {

cout << x << y << endl;

}

int main() {

int x = 1;

int y = 2;

print(y = 5, x = 6);

}

a) 12

b) 21

c) 65

d) 56

  1. Верно ли утверждение, что в качестве значений параметров по умолчанию не могут использоваться константы, глобальные переменные и выражения?

a) Да

b) Нет

  1. Что выведет на экран следующий код?

#include <iostream>

int foo()

{

return 1, 2, 3, 4, 5;

}

int main()

{

std::cout << foo() << std::endl;

return 0;

}

a) 2

b) 4

c) 5

d) 3

  1. Строка — это:

a) массив символов

b) массив символов, заканчивающийся символом \n (нуль-символом)

c) последовательность однотипных величин

d) массив символов, начинающийся символом \n (нуль-символом)

  1. Для символьных данных в C введен тип:

a) int

b) char

c) void

d) string

  1. Что выведет на экран следующая программа?

#include <iostream>

#include <string>

using namespace std;

int main() {

string str("abcdefghijk");

int index = str.length();

index = ~index;

while(++index) {

cout << str.at(~index);

}

return 0;

}

a) abcdefghijk

b) программа выведет на экран какие-то ASCII-символы и нормально завершит работу

c) ошибка компиляции

d) kjihgfedcba

  1. Верно ли утверждение, что для представления символьной информации в С++ используются символы, символьные переменные и текстовые константы?

a) Да

b) Нет

  1. Какая из перечисленных операций над строками не определена?

a) сравнивания

b) объединения

c) определения длины строки

d) присваивания

  1. Функция, осуществляющая ввод одного символа их входного потока, при этом возвращающая один байт информации (символ) в виде значения типа int — это:

a) getchar

b) putchar

c) puts

d) gets

  1. Функция, считывающая строку из стандартного потока до появления символа '\n' — это:

a) getchar

b) putchar

c) puts

d) gets

  1. Укажите функции копирования строк библиотеки string.h:

a) strcpy()

b) strlen()

c) strcmp()

d) strncat()

  1. Укажите функции сравнения строк библиотеки string.h:

a) strcpy()

b) strcat()

c) strcmp()

d) strncpy()

  1. Укажите функцию объединения строк библиотеки string.h:

a) strcpy()

b) strcat()

c) strcmp()

d) strlen()

  1. Укажите функцию поиска подстроки в строке библиотеки string.h:

a) strcpy()

b) strcat()

c) strstr()

d) strlen()

  1. Укажите функцию поиска вхождения символа в строку библиотеки string.h:

a) strcpy()

b) strcat()

c) strstr()

d) strchr()

  1. Укажите функцию определения длины строки библиотеки string.h:

a) strcpy()

b) strlen()

c) strstr()

d) strchr()

  1. C помощью какой функции можно преобразовать строку в число типа double:

a) atof ()

b) atoi ()

c) atol()

d) нет правильного варианта ответа

  1. C помощью какой функции можно преобразовать строку в число типа int:

a) atof ()

b) atoi ()

c) atol()

d) нет правильного варианта ответа

  1. C помощью какой функции можно преобразовать строку в число типа long:

a) atof ()

b) atoi ()

c) atol()

d) нет правильного варианта ответа

  1. Верно ли утверждение, что в библиотеке ctype.h есть функции tolower и toupper, переводящие символ латинского алфавита соответственно в нижний и верхний регистр?

a) Да

b) Нет

  1. Верно ли утверждение: string – это тип данных (класс) стандартной библиотеки, основные действия со строками в котором выполняются с помощью операций и методов, а длина строки изменяется динамически в соответствии с потребностями?

a) Да

b) Нет

  1. Какие из объявлений переменных типа string не верны?

a) string sl;

b) string s2("Bacя");

c) string s2("Bacя"); string s3(s2);

d) нет правильного ответа

  1. Можно ли строке типа string присвоить другую строку типа string?

a) Да

b) Нет

  1. Укажите функцию класса string, которая используется для вставки в одну строку части другой строки:

a) insert()

b) append()

c) erase()

d) replace()

  1. Укажите функцию класса string, которая используется для удаления части строки:

a) insert()

b) append()

c) erase()

d) replace()

  1. Укажите функцию класса string, которая используется для замены части строки:

a) insert()

b) append()

c) erase()

d) replace()

  1. Укажите функцию класса string, которая используется для получения длины строки:

a) size()

b) length()

c) max_size()

d) empty()

  1. Последовательные файлы – это файлы в которых … :

a) чтение и запись производятся с начала, байт за байтом

b) чтение и запись производятся в указанную позицию

c) нет правильного ответа

  1. Файлы с произвольным доступом – это файлы в которых … :

a) чтение и запись производятся с начала, байт за байтом

b) чтение и запись производятся в указанную позицию

c) нет правильного ответа

  1. Для использования файловых потоков необходимо подключить заголовочный файл:

a) stdio.h

b) iostream.h

c) fstream.h

d) нет правильного варианта ответа

  1. Опишите, что происходит в следующем примере:

fopen(“file.txt”,”a”)

a) открывает файл для записи в конец файла

b) открывает файл для чтения

c) открывает файл для записи

d) нет правильного варианта ответа

  1. Опишите, что происходит в следующем примере:

fopen(“file.txt”,”w+”)

a) открывает файл для записи

b) открывает файл для чтения

c) удаляет существующий файл, если он есть, создает новый и открывает его для записи

d) нет правильного варианта ответа

  1. Опишите, что происходит в следующем примере:

ifstream ifs(“file.txt”, , ios::app);

a) открывает файл для записи в конец файла

b) открывает файл для чтения

c) открывает файл для записи

d) нет правильного варианта ответа

  1. Опишите, что происходит в следующем примере:

ifstream ifs(“file.txt”, , ios::in);

a) открывает файл для записи в конец файла

b) открывает файл для чтения

c) открывает файл для записи

d) нет правильного варианта ответа

  1. Определение типа структуры начинается с ключевого слова:

a) union

b) struct

c) enum

d) нет правильного варианта ответа

  1. Верно ли утверждение, что создание структурной переменной возможно двумя способами: с использованием шаблона (типа) или без него.

a) Да

b) Нет

  1. Какой результат компиляции и выполнения следующей программы?

#include <iostream>

#include <string>

struct A {

void exec() {

std::cout << "Hello ";

}

};

struct B {

void exec() {}

};

struct C : virtual A, virtual B {

void exec() {

A::exec();

std::cout << "World\n";

}

};

int main() {

A* a = new C();

B* b = new C();

C* c = new C();

a->exec();

b->exec();

c->exec();

}

a) Hello World

b) World

c) Hello

d) Hello Hello World

  1. Какие операции не возможны над структурами?

a) присваивание

b) получение адреса переменной с помощью операции &

c) осуществление доступа к членам структуры

d) сравнение структурных переменных

  1. Верно ли утверждение, что структуру можно передать в функцию по частям?

a) Да

b) Нет

  1. Верно ли утверждение, что структуру можно передать в функцию целиком?

a) Да

b) Нет

  1. Верно ли утверждение, что структуру нельзя передать в функцию через указатель?

a) Да

b) Нет

  1. Укажите верный способ обращения к полям структуры struct point *pp;

a) (*pp).поле, pp->поле

b) *(pp).поле, pp->поле

c) pp.поле, *pp->поле

d) нет правильного ответа

  1. Верно ли утверждение, что полем структурной переменной может быть переменная любого типа, в том числе другая структурная переменная.

a) Да

b) Нет

  1. Если в множестве элементов, каждый элемент содержит только ссылку на следующий, то такое множество называется:

a) двусвязный список

b) односвязный список

c) кольцевой список

d) нет правильного ответа

  1. Если в множестве элементов, каждый элемент содержит не только ссылку на следующий, но и ссылку на предыдущий элемент, то такое множество называется:

a) двусвязный список

b) односвязный список

c) кольцевой список

d) нет правильного ответа

173. Если в множестве элементов, каждый элемент содержит не только ссылку на следующий, но и ссылку на предыдущий элемент, а также последний элемент связан указателем с первым, то такое множество называется:

a) двусвязный список

b) односвязный список

c) кольцевой список

d) нет правильного ответа

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

a) struct

b) namespace

c) typedef

d) union

  1. Для объявления объединения используется ключевое слово … :

a) struct

b) enum

c) typedef

d) union

  1. Объединение … :

a) содержит несколько полей, однако в любой момент времени доступно только одно поле

b) содержит несколько полей и в любой момент времени доступны все поля

c) не содержит полей

d) нет правильного варианта ответа

  1. Под объединение выделяется столько памяти, сколько требуется для размещения

a) всех полей

b) самого маленького поля

с) самого большого поля

d) нет правильного ответа

  1. Верно ли утверждение, что все поля структуры совместно используют выделенную память для хранения своих значений.

a) Да

b) Нет

  1. Структуры отличаются от классов тем, что доступ к элементам, а также базовый класс при наследовании по умолчанию считаются

a) private

b) protected

c) public

d) нет правильного ответа

  1. К основным принципам ООП не относится:

a) инкапсуляция

b) полиморфизм

c) абстрагирование

d) наследование

  1. Инкапсуляция — это …

a) свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью

b) свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта

c) свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя

d) способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые

  1. Наследование — это …

a) свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью

b) свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта

c) свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя

d) способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые

  1. Полиморфизм — это …

a) свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью

b) свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта

c) свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя

d) способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые

  1. Абстрагирование — это …

a) свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью

b) свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

c) свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя

d) способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые

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

a) Да

b) Нет

  1. Скомпилируется ли следующий код:

class Clazz

{

};

a) Нет

b) Да

  1. Какого спецификатор доступа не существует в классе:(3)

a) protected

b) private

c) alternative

d) public

  1. Откомпилируется ли следующий фрагмент кода:

class fullEmpty { };

class iClass: fullEmpty {

public:

int iPublicVariable;

private:

float iPrivateVariable;

protected:

int iProtectedVariable;

public:

double iPublicVariableToo;

};

a) да. Код откомпилируется

b) нет. Нельзя одновременно наследовать класс и использовать модификатор доступа protected

c) нет. Нельзя наследовать класс от пустого класса

d) нет. Модификатор доступа public объявлен несколько раз

  1. Какие спецификаторы доступа будут установлены по умолчанию для переменных a и b?

class SomeClass {

int a;

};

struct SomeStruct {

int b;

};

a) public: a; public: b;

b) public: a; private: b;

c) private: a; public: b;

d) private: a; private: b;

  1. Спецификаторы доступа управляют видимостью:

a) полей и методов класса

b) полей класса

с) методов класса

d) нет правильного ответа

  1. Поля класса могут быть описаны с модификатором:

a) extern

b) auto

c) register

d) static

  1. Есть ли ошибки в этом коде?

class A {

int a;

public:

static int GetA() { return a; }

};

a) нет

b) да

  1. Поля класса не могут быть:

a) типа int

b) типа этого же класса

c) указателями или ссылками на этот класс

d) нет правильного ответа

  1. Классы могут быть?

a) глобальными и локальными

b) только глобальными

с) только локальными

d) нет правильного ответа

  1. Верно ли утверждение, что инициализация полей класса при описании не допускается?

a) Да

b) Нет

  1. Являются ли конструкторы и деструкторы методами класса?

a) Да

b) Нет

  1. Конструктор — … :

a) операция, позволяющая организовать доступ ко всем частям объекта в строго определенной последовательности

b) определяет способ создания объекта или его инициализации; имеет то же имя, что и класс

c) операция, выполняющая очистку памяти, когда объект класса выходит за пределы области видимости или он удаляется; имеет то же имя, что и класс со знаком "~" перед ним

d) операция, которая изменяет состояние объекта

  1. Деструктор — … :

a) операция, позволяющая организовать доступ ко всем частям объекта в строго определенной последовательности

b) определяет способ создания объекта или его инициализации; имеет то же имя, что и класс

c) операция, выполняющая очистку памяти, когда объект класса выходит за пределы области видимости или он удаляется; имеет то же имя, что и класс со знаком "~" перед ним

d) операция, которая изменяет состояние объекта

  1. Выберите правильные утверждения о конструкторе класса.

a) конструктор может иметь любое имя

b) конструктор имеет то же имя, что и класс

c) конструктор объявляется в точности так же, как и обычный метод класса

d) конструктор возвращает значения

  1. При создании каждого объекта выделяется память, достаточная для хранения всех полей, и автоматически вызывается …

a) конструктор

b) деструктор

с) метод класса

d) нет правильного ответа

  1. При выходе объекта из области действия он уничтожается, при этом автоматически вызывается …

a) конструктор

b) деструктор

с) метод класса

d) нет правильного ответа

  1. Константный метод класс описывается с ключевым словом … :

a) const

b) static

c) extern

d) friend

  1. Верно ли утверждение, что статические поля применяются для хранения данных, общих для всех объектов класса, например, количества объектов или ссылки на разделяемый всеми объектами ресурс?

a) Да

b) Нет

  1. Содержит ли этот код ошибки компиляции?

class A {

static void Foo();

};

static void A::Foo() { }

a) Нет

b) Да

  1. После удаления экземпляра класса его статические члены:

a) продолжают существовать до тех пор, пока не будет удалён последний экземпляр этого класса

b) продолжают существовать даже когда не остаётся ни одного экземпляра класса

c) принимают исходные значения

d) удаляются вместе с экземпляром класса

  1. Для чего используется модификатор доступа mutable?

a) чтобы разрешить модификацию члена класса, принадлежащего константному объекту

b) такого модификатора нет в С++

c) тоже самое, что и const в С

d) тоже самое, что и volatile

  1. Сколько конструкторов и деструкторов может быть у одного класса (выберите наиболее точный вариант)?

a) несколько конструкторов, несколько деструкторов

b) один конструктор, один деструктор

c) один конструктор, несколько деструкторов

d) несколько конструкторов, один деструктор

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

a) для создания объекта, аналогичного тому, который уже существует

b) инициализации объекта требуемыми значениями

c) создания "пустого" объекта

d) нет правильного ответа

  1. Конструктор с параметром используется для:

a) для создания объекта, аналогичного тому, который уже существует

b) инициализации объекта требуемыми значениями

c) создания "пустого" объекта

d) нет правильного ответа

  1. В каком порядке инициализируются поля в классе?

a) в порядке перечисления инициализаторов в списке инициализации конструктора

b) порядок инициализации не гарантируется

c) в порядке их объявления

  1. Конструктор копирования используется для:

a) для создания объекта, аналогичного тому, который уже существует

b) инициализации объекта требуемыми значениями;

c) создания "пустого" объекта

d) нет правильного ответа

  1. Укажите верные утверждения:

a) конструктор возвращает значение

b) конструкторы нельзя описывать с модификаторами const. virtual и static

c) конструкторы наследуются

d) если программист не указал ни одного конструктора, компилятор создает его автоматически

  1. Укажите неверное утверждение:

a) деструктор возвращает значение

b) деструктор не имеет параметров

c) если в классе деструктор не определен явно, то компилятор генерирует деструктор по умолчанию

d) не наследуется

  1. Что будет выведено на экран?

#include <iostream>

class A

{

public:

A(void){this->_num=0;}

int A(int num){this->_num=num;}

~A(void){std::cout << this->_num;}

private:

int _num;

};

int main(void)

{

A val(100);

return 0;

}

a) программа не скомпилируется

b) экран будет пуст

c) 0

d) 100

  1. Что нужно добавить в класс A, чтобы программа скомпилировалась успешно?

#include <iostream>

class A

{

public:

A(const int num):_num(num){}

private:

int _num;

};

int main(void)

{

A a;

return 0;

}

a) ничего, т.к. конструктор по умолчанию добавляется в класс автоматически

b) конструктор по умолчанию

c) ничего, т.к. деструктор добавляется в класс автоматически

d) деструктор класса

  1. Какие вы видите ошибки в этом коде?

class A {

public:

A(int x) : _x(x) {} //1

private:

int _x;

};

int main() {

A a = 10; //2

A b(a);

return 0;

}

a) в строке 2 будет ошибка, т.к. у А нет конструктора по умолчанию

b) в строке 1 будет ошибка, т.к. таким образом нельзя объявлять переменные класса

c) в строке 2 будет ошибка, т.к. у A не объявлен копирующий конструктор по умолчанию

d) ошибок нет

  1. Верно ли утверждение, что дружественные функции применяются для доступа к скрытым полям класса и представляют собой альтернативу методам.

a) Да

b) Нет

  1. Дружественная функция объявляется внутри класса, с ключевым словом:

a) inline

b) virtual

c) static

d) friend

  1. Верно ли утверждение, что можно перегружать любые операции, существующие в C++?

a) Да

b) Нет

  1. Перегрузка операций осуществляется с помощью ключевого слова … :

a) inline

b) operator

c) virtual

d) нет правильного ответа

  1. Операции постфиксного инкремента и декремента при перегрузке должны иметь первый параметр типа ...

a) bool

b) double

c) int

d) float

  1. Верно ли утверждение, что перегруженные методы класса могут определяться как static?

a) Да

b) Нет

  1. Верно ли утверждение, что поведение перегруженных операций new и delete должно соответствовать действиям, выполняемым ими по умолчанию.

a) Да

b) Нет

  1. Можно ли сделать виртуальным перегруженный оператор?

a) Да

b) Нет

  1. Укажите верную конструкцию наследования классов в С++:

a) class B: public B {…}

b) class B extends A {…}

c) class B: extends A {…}

d) нет правильного ответа

  1. Поддерживает ли С++ множественное наследование?

a) Нет

b) Да

  1. Какой ключ доступа используется по умолчанию при таком наследовании:

class B: A {…}

a) protected

b) private

c) public

d) нет правильного ответа

  1. Верно ли утверждение, что private элементы базового класса в производном классе недоступны вне зависимости от ключа?

a) Да

b) Нет

  1. Элементы protected при наследовании с ключом private становятся в производном классе:

a) protected

b) public

c) private

  1. Элементы protected при наследовании с ключом public становятся в производном классе:

a) protected

b) public

c) private

  1. Элементы public при наследовании с ключом public становятся в производном классе:

a) protected

b) public

c) private

  1. Простым называется наследование, при котором производный класс имеет … :

a) двух родителей

b) двух и более родителей

c) одного родителя

d) нет правильного ответа

  1. Для иерархии, состоящей из нескольких уровней, конструкторы базовых классов вызываются начиная

a) с самого верхнего уровня

b) с самого нижнего уровня

с) нет правильного ответа

  1. Для иерархии классов, состоящей из нескольких уровней, деструкторы вызываются начиная:

a) с самого верхнего уровня

b) с самого нижнего уровня

с) нет правильного ответа

  1. Что будет выведено на экран в результате работы программы?

#include <iostream>

using namespace std;

class Base

{

public:

virtual Base() { cout << "Base создан\n"; }

};

class Derv: public Base

{

public:

Derv() { cout << "Derv создан\n"; }

};

int main()

{

Base *pBase = new Derv;

delete pBase;

return 0;

}

a) Base создан

b) Derv создан Base создан

c) Base создан Derv создан

d) Возникнет ошибка компиляции

  1. Что будет выведено на экран в результате работы программы?

#include <iostream>

using namespace std;

class Base

{

public:

virtual ~Base() { cout << "Base удален\n"; }

};

class Derv: public Base

{

public:

~Derv() { cout << "Derv удален\n"; }

};

int main()

{

Base *pBase = new Derv;

delete pBase;

return 0;

}

a) Base удален

b) Derv удален Base удален

c) Base удален Derv удален

d) Возникнет ошибка компиляции

  1. Виртуальным называется метод, ссылка на который разрешается на этапе:

a) выполнения программы

b) компоновки программы

  1. Для определения виртуального метода используется спецификато … :

a) virtual

b) friend

c) operator

d) inline

  1. Что будет выведено?

class C

{

public:

void Print() { cout << "CLASS C"; }

};

class D : public C

{

public:

void Print() { cout << "CLASS D"; }

};

int main()

{

C *test = new D();

test->Print();

}

a) CLASS D

b) CLASS C

c) Программа не скомпилируется т.к пропущено 'return 0;' в функции main()

  1. Если в базовом классе метод определен как виртуальный, метод, определенный в производном классе с тем же именем и набором параметров, автоматически становится … :

a) виртуальным

b) обычным

с) нет правильного ответа

  1. Если в базовом классе метод определен как виртуальный, метод, определенный в производном классе с отличающимся набором параметров, автоматически становится … :

a) виртуальным

b) обычным

с) нет правильного ответа

  1. Виртуальный метод не может объявляться с модификатором

a) friend

b) virtual

c) static

d) нет правильного ответа

  1. Чисто виртуальный метод — это:

a) virtual void f(int) = 0;

b) virtual void f(int) {}

c) virtual void f(int) { return }

d) нет таких методов

  1. Верно ли утверждение, что чисто виртуальный метод должен переопределяться в производном классе?

a) Нет

b) Да

  1. Компилятор создает таблицу виртуальных методов (vtbl), для каждого …:

a) класса

b) объекта

  1. Класс, содержащий хотя бы один чисто виртуальный метод, называется … :

a) базовым

b) абстрактным

c) производным

d) шаблоном

  1. Можно ли создавать объекты абстрактного класса?

a) Да

b) Нет

  1. Последовательные контейнеры обеспечивают:

a) хранение конечного количества однотипных величин в виде непрерывной последовательности

b) быстрый доступ к данным по ключу

с) нет правильного ответа

  1. Ассоциативные контейнеры обеспечивают:

a) хранение конечного количества однотипных величин в виде непрерывной последовательности

b) быстрый доступ к данным по ключу

с) нет правильного ответа

  1. К последовательным контейнерам относятся …:

a) вектор (vector), очередь (deque), список (list), стек (stack)

b) вектор (vector), очередь (deque), список (list), множества (set)

c) вектор (vector), очередь (deque), список (list), словари (map),

d) вектор (vector), очередь (deque), список (list), битовые множества (bitset)

  1. К ассоциативным контейнерам относятся …:

a) словари (map), множества (set), список (list), вектор (vector)

b) словари (map), множества (set), список (list), стек (stack)

c) словари (map), множества (set), стек (stack)

d) словари (map), множества (set), битовые множества (bitset)

  1. Вектор — это структура, эффективно реализующая … :

a) произвольный доступ к элементам, добавление в конец и удаление из конца

b) произвольный доступ к элементам, добавление в оба конца и удаление из обоих концов

c) вставку и удаление элементов в произвольное место, но не имеет произвольного доступа к своим элементам

d) нет правильного ответа

  1. Для векторов определены операции:

a) /, *

b) ++, --

c) /=, *=

d) ==, !=

  1. Два вектора считаются равными, если :

a) равны их размеры

b) равны их размеры и все соответствующие пары элементов

c) равны все соответствующие пары элементов

d) нет правильного ответа

  1. Один вектор меньше другого, если:

a) первый из элементов одного вектора, не равный соответствующему элементу другого, больше него

b) последний из элементов одного вектора, не равный соответствующему элементу другого, меньше него

c) первый из элементов одного вектора, не равный соответствующему элементу другого, меньше него

d) нет правильного ответа

  1. Список — это структура, эффективно реализующая … :

a) произвольный доступ к элементам, добавление в конец и удаление из конца

b) произвольный доступ к элементам, добавление в оба конца и удаление из обоих концов

c) вставку и удаление элементов в произвольное место, но не имеет произвольного доступа к своим элементам

d) нет правильного ответа

  1. Шаблон списка определен в заголовочном файле:

a) <bitset>

b) <vector>

c) <list>

d) <multimap>

  1. Для упорядочивания элементов списка используется метод:

a) splice

b) sort

c) assign

d) remove

  1. Для слияния списков служит метод:

a) splice

b) sort

c) merge

d) remove

  1. Для удаления элемента списка по его значению применяется функция:

a) splice

b) sort

c) assign

d) remove

  1. Сцепка списков (splice) служит для:

a) перемещения элементов из одного списка в другой без перераспределения памяти, только за счет изменения указателей

b) перемещения элементов из одного списка

в другой c перераспределением памяти

c) удаления элементов памяти

d) нет правильного ответа

  1. Для изменения порядка следования элементов списка на обратный служит метод:

a) unique

b) sort

c) reverse

d) remove

  1. Двусторонняя очередь — это структура, эффективно реализующая … :

a) произвольный доступ к элементам, добавление в конец и удаление из конца

b) произвольный доступ к элементам, добавление в оба конца и удаление из обоих концов

c) вставку и удаление элементов в произвольное место, но не имеет произвольного доступа к своим элементам

d) нет правильного ответа

  1. Шаблон словаря определен в заголовочном файле:

a) <bitset>

b) <vector>

c) <map>

d) <multimap>

  1. В словаре (mар), в отличие от словаря с дубликатами (multimap), все ключи должны быть:

a) уникальными

b) могут быть не уникальными

с) нет правильного ответа

  1. Для итераторов словаря допустимы операции:

a) только ++

b) +, -

c) только --

d) ++, --

  1. Для поиска элементов в словаре определены следующие функции:

a) find

b) lower_bound

c) insert

d) erase

  1. Для очистки элементов словаря используется следующая функция:

a) find

b) erase

c) clear

d) нет правильного ответа

  1. Словари с дубликатами (multimap) допускают хранение элементов:

a) с одинаковыми ключами

b) только с уникальными ключами

с) нет правильного ответа

  1. Для множества значения ключей должны быть:

a) уникальными

b) целого типа

с) вещественного типа

d) строкового типа

  1. Биты в битовом множестве нумеруются:

a) слева направо, начиная с 0

b) справа налево, начиная с 0

с) справа налево, начиная с 1

d) слева направо, начиная с 1

  1. Шаблон битового множества определен в заголовочном файле:

a) <bitset>

b) <vector>

c) <map>

d) <multimap>

  1. Итераторы библиотеки STL предназначены для:

a) поддержки эффективной обработки массивов с плавающей точкой и работы с комплексными числами

b) удобной и защищенной от ошибок работы с символьными строками

c) унифицированного доступа к элементам контейнерных и других классов

d) нет правильного ответа

  1. Строковые классы библиотеки STL предназначены для:

a) поддержки эффективной обработки массивов с плавающей точкой и работы с комплексными числами

b) удобной и защищенной от ошибок работы с символьными строками

c) унифицированного доступа к элементам контейнерных и других классов

d) нет правильного ответа

  1. Математические классы библиотеки STL предназначены для:

a) поддержки эффективной обработки массивов с плавающей точкой и работы с комплексными числами

b) удобной и защищенной от ошибок работы с символьными строками

c) унифицированного доступа к элементам контейнерных и других классов

d) нет правильного ответа

  1. Верно ли следующее утверждение: исключительная ситуация, или исключение — это возникновение непредвиденного или аварийного события в процессе выполнения программы.

a) Да

b) Нет

  1. Место, в котором может произойти ошибка, должно входить в контролируемый блок, перед которым записывается ключевое слово … :

a) throw

b) catch

c) try

d) нет правильного ответа

  1. Все функции, прямо или косвенно вызываемые из try-блока:

a) принадлежат блоку

b) не принадлежат блоку

c) нет правильного ответа

  1. Для генерации исключения используется ключевое слово … :

a) throw

b) catch

c) try

d) нет правильного ответа

  1. Обработчики исключений начинаются с ключевого слова:

a) throw

b) catch

c) try

d) нет правильного ответа

  1. Блок catch () распологается:

a) сразу после блока try

b) перед блоком try

c) после функции main()

d) нет правильного ответа

  1. Верно ли утверждение, что после обработки исключения управление передается первому оператору, находящемуся непосредственно за обработчиками исключений?

a) Да

b) Нет

  1. Верно ли утверждение, что после обработки исключения управление передается первому оператору, минуя код всех обработчиков, если исключение в try-блоке не было сгенерировано?

a) Нет

b) Да

  1. Что выведет на экран программа

#include <iostream>

int main(int argc, char* argv[])

{

int try = 0;

std::cout << try++;

return 0;

}

a) возникнет ошибка времени выполнения

b) 3

c) вызовет ошибку компиляции

d) 1

  1. Содержит ли этот код ошибки?

void Test() {

try {

int i = 10, j = 20; // 1

throw int(10); // 2

}

catch (...) { // 3

i = 20; // 4

int j = 20; // 5

}

}

a) ошибка в строчке // 2

b) нет ошибок

c) ошибка в строчке // 4

d) ошибка в строчке // 1

  1. Для чего используется ключевое слово finally в С++?

a) такого ключевого слова нет в С++

b) для объявления блока кода, идущего после блока try и, опционально, после блоков catch, содержащий код, который должен выполниться в любом случае

c) для объявления блока кода, идущего после блока try, который должен выполниться в любом случае

d) для декларации членов класса, которые не могут быть изменены после вызова конструктора класса

  1. Что из приведенного ниже НЕ является правильным преобразованием типа в С++?

a) int_cast

b) dynamic_cast

c) static_cast

d) reinterpret_cast

  1. Какого приведения типов данных нет в C++ ?

a) const_cast

b) dynamic_cast

c) static_cast

d) extern_cast

  1. Файловые потоки предназначены для:

a) передачи данных от клавиатуры и на экран дисплея

b) обмена информацией с файлами на внешних носителях данных

c) работы с массивами символов в оперативной памяти

d) нет правильного ответа

  1. Стандартные потоки предназначены для:

a) передачи данных от клавиатуры и на экран дисплея

b) обмена информацией с файлами на внешних носителях данных

c) работы с массивами символов в оперативной памяти

d) нет правильного ответа

  1. Строковые потоки предназначены для:

a) передачи данных от клавиатуры и на экран дисплея

b) обмена информацией с файлами на внешних носителях данных

c) работы с массивами символов в оперативной памяти

d) нет правильного ответа

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

a) форматирующие

b) манипуляторы

с) флагами форматирования

в) нет правильного ответа