Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КИМ_ООП

.doc
Скачиваний:
67
Добавлен:
10.09.2019
Размер:
232.96 Кб
Скачать

№ раздела

и

его название

воп-роса

Текст вопроса

Варианты ответов

Буква, соответствующая правильному ответу

a

b

c

d

1

Какой вид доступа должны иметь элементы реализации класс

Любой.

protected или private

protected

Как правило, private

d

2

Какие функции компилятор языка С++ строит автоматически?

Конструкторы умолчания и копирования

Конструктор умолчания

Оператор присваивания

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

d

3

Какие функции базового класса не наследуется порожденным классом в стандарте языка С++ 98?

Деструктор

Конструкторы

Конструкторы и деструктор

Оператор присваивания, конструкторы и деструктор

d

4

Имеется класс список (List). Необходимо разработать класс (Stack). Какой способ разработки класса Stack предпочтительней использовать: наследование или включение?

Предпочтительней использовать public – наследование

Предпочтительней использовать отношение включения, объявив в новом классе поле типа List.

Оба способа равноценны

Однозначного ответа нет. Все зависит от реализации класса List

b

5

Имеется класс массив (Array). Необходимо разработать класс (Stack). Какой способ разработки класса Stack предпочтительней использовать: наследование или включение?

Предпочтительней использовать public – наследование

Предпочтительней использовать отношение включения, объявив в новом классе поле типа Array

Оба способа равноценны

Однозначного ответа нет. Все зависит от реализации класса Array

b

6

Имеется класс животное (Animal). Необходимо разработать класс (Dog). Какой способ разработки класса собака (Dog) предпочтительней использовать: наследование или включение.

Предпочтительней использовать public – наследование

Предпочтительней использовать отношение включения, объявив в новом классе поле типа Animal

Оба способа равноценны

Однозначного ответа нет. Все зависит от реализации класса Animal

a

7

Сколько стандартов имеется в языке С++. Варианты ответов

Язык не стандартизован

Имеется один стандарт С++98

Имеются три стандарта С++89, С++98 и С++11

Имеются два стандарта С++98 и С++11

d

8

В какой области оперативной памяти можно размещать объекты пользовательского типа при программировании на языке С++

Только в динамической памяти

Только в стеке

Только в статической памяти

В статической и динамической памяти и в стеке

d

9

Определите, имеются ли ошибки в клиентской части приведённого ниже кода? Если ошибки имеются, укажите их число.

{ public: Foo(}; Foo(int x); void bar(); private: int x_; };

// Клиентский код Foo z(); z.bar(); Foo z1(5); Foo z2(z1); z2.x_ = 100; z1.Foo(100);

Нет ошибок

Одна ошибка

Две ошибки

Три ошибки

d

10

Имеется пустой класс

class Empty { }; Имеются ли ошибки в следующем клиентском коде. Если ошибки имеются, необходимо указать их количество.

Empty e1; Empty e2; e2 = e3;

Ошибок нет

Одна ошибка

Две ошибки

Три ошибки

a

11

Имеются ли отличия в возможностях, предоставляемых классами, построенными с использованием ключевых слов class и struct?

Отличий нет

Отличия касаются только использования принципа умолчания

В классе, построенного с использованием ключевого слова class можно использовать внутриклассовую инициализацию, а в классе с использованием ключевого слова struct нет

В классе, построенного с использованием ключевого слова struct можно использовать внутриклассовую инициализацию, а в классе с использованием ключевого слова class нет

b

12

Справедливо ли утверждение, что все конструкторы в языке С++ вызываются автоматически?

Все конструкторы в языке С++ вызываются автоматически при создании объектов

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

Автоматически вызываются конструкторы для объектов, создаваемых в динамической памяти

Автоматически вызываются конструкторы для объектов, создаваемых в статической памяти и стеке

a

13

Можно ли перегружать конструкторы и деструкторы?

Можно перегружать как конструкторы, так и деструкторы.

Можно перегружать только конструкторы

Конструкторы и деструкторы не перегружаются

Можно перегружать только деструкторы

b

14

Может ли деструктор иметь параметры?

Нет, не может

Может иметь единственный параметр

Может иметь максимум два параметра

Может иметь максимум три параметра

a

15

Имеется следующий программный код:

class X {

//… }; //…

X* p1 = new X; X* p2 = p1; X* p3 = p1; delete p1; p1 = nullptr; Необходимо ответить на вопрос: Сколько висячих указателей возникнет после выполнения данного кода:

Висячие указатели не возникают

Все указатели будут висячими

Один указатель окажется висячим

Два указателя окажутся висячими

d

16

Имеются два класса A и B. Необходимо определить вид отношения, которым связаны эти два класса.

class B; class A {

public: A(); //… private: B b_; //… }; class B { //… };

Наследование

Включение

Зависимости

Включение в форме композиции

d

17

Имеются два класса A и B. Необходимо определить вид отношения, которым связаны эти два класса.

class B; class A {

public: A(); //… private: int b_; //… }; class B : A { //… };

public наследование

Включение

Зависимости

private.наследование

d

18

Имеются два класса A и B. Необходимо определить вид отношения, которым связаны эти два класса.

class B; class A { public: A(); void f(const B& b); // … }; class B { //… };

Наследование

Включение

Включение в форме агрегации

Классы A и B связаны отношением зависимости

d

19

Имеются два класса A и B. Необходимо определить вид отношения, которым связаны эти два класса.

struct A { public: A(); //… private: //… }; struct B : A { //… };

public наследование

protected наследование

public наследование

Классы A и B связаны отношением зависимости

a

20

Можно или нет переопределять в порожденном классе невиртуальные функции. Если можно, то к каким негативным последствиям это возможно приведет.

Появится сообщение об ошибке

Может привести к неопределенному поведению компьютера

Может привести к негативным последствиям при реализации полиморфного поведения

Может привести к зависанию компьютера

c

21

С какими правами доступа следует объявлять элементы реализации класса: public, protected или private?

Любыми

Только не public

protected

Преимущественно private

d

22

По какой причине не рекомендуют не перегружать операторы: && и ||?

Не возможность обеспечить сокращенную форму вычисления, характерную для встроенных типов

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

Не возможность обеспечить определенный порядок и / или сокращенную форму вычислений, характерные для встроенных типов

Трудность реализации перегрузки

c

23

Имеется необходимость разработать два класса список (List) и стек (Stack). Целесообразно выполнить их в виде системы из двух классов. Каким образом предпочтительно их связать?

public наследования, выбрав в качестве базового класса List, породив от него класс Stack

public наследования, выбрав в качестве базового класса Stack, породив от него класс List

Композитного включения, включив в классе Stack поле типа List

Композитного включения, включив в классе List поле типа Stack

c

24

Имеется необходимость разработать два класса массив (Array) и стек (Stack). Целесообразно выполнить их в виде системы из двух классов. Каким образом предпочтительно их связать?

public наследования, выбрав в качестве базового класса Array, породив от него класс Stack

public наследования, выбрав в качестве базового класса Stack, породив от него класс Array

Композитного включения, включив в классе Stack поле типа Array

Композитного включения, включив в классе Array поле типа Stack

c

25

Имеется необходимость разработать два класса список (List) и очередь (Queue). Целесообразно выполнить их в виде системы из двух классов. Каким образом предпочтительно их связать?

public наследования, выбрав в качестве базового класса List, породив от него класс Queue

public наследования, выбрав в качестве базового класса Queue, породив от него класс List

Композитного включения, включив в классе Queue поле типа List

Композитного включения, включив в классе List поле типа Queue

c

26

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

Поверхностное копирование

Глубинное копирование

Вид копирования оставлен на усмотрение разработчика компилятор

Копирование перемещением

a

27

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

Особых преимуществ нет

Оператор new кроме выделения памяти, вызывает конструктор

Оператор new возвращает типизированный указатель, а функции выделения памяти языка Си возвращают нетипизированный указатель

Программист при работе с функциями языка должен предусмотреть вычисление требуемого объема памяти, оператор new это вычисляет сам

b

28

Поясните, что следует понимать под принципом «закрыто - открыто»?

Это программистская шутка

Открыто для расширения, закрыто для редактирования

Открыто для разработчика, закрыто для клиента

Все, что физически открыто разработчику и закрыто для клиента

b

29

Является ли допустимым следующее определение переменной:

int n{};

Не является допустимым. Фигурные скобки можно использовать только при инициализации массивов

Не является допустимым. Пропущен символ «=»

Не является допустимым. Отсутствует инициализирующее значение

Является допустимым в соответствии со стандартом С++11

d

30

Является ли допустимым следующее определение переменной:

int n{3.1};

Не является допустимым. Фигурные скобки можно использовать только при инициализации массивов.

Не является допустимым. Пропущен символ «=»

Не является допустимым. Имеет место «сужение» при преобразовании от double к int

Является допустимым в соответствии со стандартом С++11

c

31

Является ли допустимым следующее определение переменной:

float n{3.1};

Не является допустимым. Фигурные скобки можно использовать только при инициализации массивов.

Не является допустимым. Пропущен символ «=».

Не является допустимым. Имеет место «сужение» при преобразовании от double к float

Является допустимым в соответствии со стандартом С++11

c

32

Внес ли стандарт С++11 изменения в работу с ключевым словом auto?

Стандарт С++11 изменений в работу с ключевым словом auto не вносил

Стандарт С++11 изменил статус ключевого слова auto на устаревший

Стандарт С++11 изменил назначение ключевого слова auto. Теперь это слово используется для вывода типа переменной на основе типа ее инициализатора

Стандарт С++11 возложил на это дополнительные функции по выводу типа переменной на основе типа ее инициализатора

c

33

Какие из приведенных ниже инициализаций переменных во время их объявления являются недопустимыми из-за «сужения»?

char ch1 = 12345; //1 char ch2 = {12345}; //2 float f1 = 5.6; //3 float f2 = {5.6}; //4 int i = {5.3} //5

Недопустимое сужение содержат строки 2. 4 и 5

Недопустимое сужение содержит строка 2

Недопустимое сужение содержат строки 1 и 2

Недопустимое сужение содержат строки 1, 2 и 5

a

34

Возможны три варианта организации интерфейса перегрузки оператора присваивания (для класса X)

  1. void operator=(const X& rhs);

  2. X& operator=(const X& rhs);

  3. X operator=(const X& rhs);

Какой из вариантов является наилучшим. Иными словами, что лучше возвращать: void, X& или X.

Все варианты равноценны

Предпочтительнее возвращать void

Предпочтительнее возвращать X&

Предпочтительнее возвращать X

c

35

Какую форма префиксную или постфиксную оператора инкремента (декремента) следует использовать:

Обе формы равноценны.

Предпочтительнее использовать префиксную форму

Предпочтительнее использовать постфиксную форму

Однозначного ответа нет

b

36

Какие преимущества имеет контейнер вектор vector библиотек STL по сравнению с динамическим массивом языка Си. Дайте наиболее точный ответ.

Контейнер vector – класс, который является простой обверткой динамического массива языка Си

Контейнер vector – шаблон класса, в основе которого находится динамический массив языка Си. Это просто динамический массив языка Си, дополненный возможностью хранить данные заданного типа

Контейнер vector – шаблон класса, являющийся автоматически расширяющимся динамическим массивом

Контейнер vector – шаблон класса, являющийся автоматически расширяющимся динамическим массивом. Содержит большое количество функций, предназначенных для обработки массива

d

37

Укажите чем отличается объект – функция языка С++ от указателя на функцию языка Си.

Объект – функция – класс, который является обверткой указателя на функцию.

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

С помощью объекта на функцию можно передавать не только функцию, но и дополнительную информацию, необходимую для ее работы

С помощью объекта на функцию можно передавать не только функцию, но и дополнительную информацию, необходимую для ее работы. Объект – функция может быть встроенным, а указатель на функцию нет

d

38

Ограничиваются или нет возможности контейнеров библиотеки STL по обработке данных только их собственными функциями?

Возможности контейнеров библиотеки STL по обработке данных только их собственными функциями

Дополнительно некоторые из контейнеров могут воспользоваться алгоритмами библиотеки STL

Дополнительно контейнеры могут воспользоваться алгоритмами STL, а также написать могут собственные алгоритмы

Дополнительно контейнеры могут воспользоваться некоторыми алгоритмами STL

c

39

Контейнеры и алгоритмы библиотеки STL и обобщённое программирование. В чем проявляется обобщение в этих компонентах библиотеки STL? Дайте наиболее точный ответ

Обобщение в этих компонентах проявляется одинаково

Контейнеры обобществлены по отношению к типам данных, а алгоритмы обобществлены по отношению к типам контейнеров

Контейнеры и алгоритмы обобществлены по отношению к данным

Контейнеры обобществлены по отношению к данным, а алгоритмы не обобществлены

b

40

В чем состоит роль итераторов в библиотеке STL? Дайте наиболее точный ответ.

Никакой особой роли у итераторов в библиотеки STL, они используются просто для доступа к элементам контейнеров

Достоинством итераторов библиотеки STL является их близость к указателям. Это повышается эффективность их работы

Итераторы библиотеки STL являются связующим звеном между контейнерами и алгоритмами. Они обеспечивают обобщение алгоритмов по отношению к контейнерам

Достоинством итераторов библиотеки STL - их организация по принципу интеллектуальных указателей

c

41

В библиотеке STL имеется 5 ранжированных разновидностей итераторов. Может или нет итератор одной разновидности заменить итератор другой разновидности?

Нет, не может

Итератор более высокого ранга может заменить итератор более низкого ранга

Итератор более низкого ранга может заменить итератор более низкого ранга

Однозначного ответа нет

b

42

Можно или нет запретить наследование?

Нет, нельзя

Изначально такая возможность существует в языке С++. Для запрета наследования достаточно в объявлении класса использовать слово final после имени класса

Такая возможность появилась в стандарте С++11. Для запрета наследования достаточно в объявлении класса использовать слово final после имени класса

Такая возможность появилась в стандарте С++98. Для запрета наследования достаточно в объявлении класса использовать слово final после имени класса

c

43

Какая из трех возможных категории наследования нашла наибольшее применение:

Все разновидности наследования широко применяются

Наиболее часто применяется public наследование

Наиболее часто применяется private наследование

Наиболее часто применяется protected наследование

b

44

Какая из приводимых ниже строк содержит директиву using?

using namespace std; using std :: cout;

Не одна из приведенных строк не является директивой using

Директивой using является строка: using namespace std

Директивой using является строка: using std :: cout

Обе строки содержат директиву using

b

45

Какая из приводимых ниже строк содержит объявление using?

using namespace std; using std :: cout;

Не одна из приведенных строк не является объявлением using

Объявлением using является строка: using namespace std

Объявлением using является строка: using std :: cout

Обе строки содержат объявление using

b

46

Могут ли наследоваться конструкторы в языке С++?

Конструкторы в языке С++ не наследуются

Конструкторы в языке С++ наследуются

В стандарте С++11 программист наделен возможностью селективно наследовать конструкторы базового класса с помощью объявления using (для каждого конструктора – свое объявление). По-прежнему нельзя наследовать конструкторы умолчания, копии и переноса.

В стандарте С++11 программист наделен возможностью с помощью одного объявления using наследовать все конструкторы базового класса. По-прежнему нельзя наследовать конструкторы умолчания, копии и переноса

d

47

Можно или нет перегружать функции, находящиеся в разных областях видимости?

Можно перегружать функции, имеющие разные области видимости

Можно, при условии, что область видимости одной функции вложена в область видимости другой

Можно перегружать только функции, имеющие одну и туже область видимости

Можно (стандарт С++11), при условии, что область видимости одной функции вложена в область видимости другой

c

48

Можно (стандарт С++11), при условии, что область видимости одной функции вложена в область видимости другой

Можно

Нельзя. Появится сообщение об ошибке

Нельзя. Функция, объявленная в базовом классе, будет скрыта функцией, объявленной в порожденном классе

Стандарт с++11 разрешил перегружать такие функции

c

49

В языке С++ имеются четыре разновидности полиморфизма. Какие из них относятся к статическому полиморфизму?

Все четыре

Виртуальные функции и шаблоны классов и функций

Перегрузка функций, перегрузка операторов и шаблоны классов и функций

Виртуальные функций и перегрузка операторов

c

50

В языке С++ имеются четыре разновидности полиморфизма. Какие из них относятся к динамическому полиморфизму?

Все четыре

Виртуальные функции и шаблоны классов и функций

Перегрузка функций, перегрузка операторов и шаблоны классов и функций

Виртуальные функции

d

51

При перегрузке оператора присваивании можно возвращать: ссылку, значение или void. Что предпочтительнее возвращать?

Не имеет значения что возвращать

Предпочтительнее возвращать ссылку

Предпочтительнее возвращать значение

Предпочтительнее возвращать void

b

52

Имеются ли причины при перегрузке оператора присваивания возвращать ссылку, а не значение

Таких причин нет

Оба варианта равноценны

Лучше возвращать ссылку. В этом случае не будут создаваться временные объекты

Лучше возвращать значение. В этом случае не будут создаваться временные объекты

c

53

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

Обе формы равноценны

При использовании классов, построенных с применением ключевого слова struct лучше использовать префиксную формы, при применении ключевого слова class – постфиксную

Предпочтительнее использовать префиксную форму, так как при этом не образуются временные объекты

Предпочтительнее использовать постфиксную форму, так как при этом не возникают временные объекты

c

54

Сколько аргументов должна иметь перегружающая функция – член класса при перегрузке операторов?

Количество аргументов перегружающая функция должно быть на единицу меньше арности перегружаемого оператора

Количество аргументов зависит от вида перегружаемого оператора

Количество аргументов равно арности перегружаемого оператора

Количество аргументов на единицу больше арности перегружаемого оператора

a

55

Сколько аргументов должна иметь перегружающая дружественная при перегрузке операторов?

Количество аргументов перегружающая функция должно быть на единицу меньше арности перегружаемого оператора

Количество аргументов зависит от вида перегружаемого оператора

Количество аргументов равно арности перегружаемого оператора

Количество аргументов на единицу больше арности перегружаемого оператора

c

56

Можно или нет при перегрузке операторов изменять приоритет и арность операторов?

Нельзя изменять не арность и не приоритет

Арность можно изменять, а приоритет нельзя

Приоритет изменять можно, а арность нельзя

Можно изменять и арность, и приоритет

a

57

Какие из перечисленных операторов следует перегружать с помощью функций – членов класса, а какие с помощью дружественных функций:

  • Оператор присваивания =

  • Оператор ввода >>

  • Оператор вывода <<

Все перечисленные операторы следует перегружать с помощью функций – членов класса

Все перечисленные операторы следует перегружать с помощью дружественных функций

Оператор присваивания следует перегружать с помощью функции члена – класса, а остальные с помощью дружественных функций

Оператор присваивания следует перегружать с помощью дружественной функции, а остальные с помощью функции – члена класса

c

58

Какие из перечисленных операторов следует перегружать с помощью функций – членов класса, а какие с помощью дружественных функций:

  • Оператор индексирования []

  • Оператор ввода >>

  • Оператор вывода <<

Все перечисленные операторы следует перегружать с помощью функций – членов класса

Все перечисленные операторы следует перегружать с помощью дружественных функций

Оператор индексирования следует перегружать с помощью функции члена – класса, а остальные с помощью дружественных функций

Оператор индексирования следует перегружать с помощью дружественной функции, а остальные с помощью функции – члена класса

c

59

Какие из перечисленных операторов следует перегружать с помощью функций – членов класса, а какие с помощью дружественных функций:

  • Оператор вызова ()

  • Оператор ввода >>

  • Оператор вывода <<

Все перечисленные операторы следует перегружать с помощью функций – членов класса

Все перечисленные операторы следует перегружать с помощью дружественных функций

Оператор вызова следует перегружать с помощью функции члена – класса, а остальные с помощью дружественных функций

Оператор вызова следует перегружать с помощью дружественной функции, а остальные с помощью функции – члена класса

c

60

Какие из перечисленных операторов следует перегружать с помощью функций – членов класса, а какие с помощью дружественных функций:

  • Оператор инкремента и декремента

  • Оператор ввода >>

  • Оператор вывода <<

Все перечисленные операторы следует перегружать с помощью функций – членов класса

Все перечисленные операторы следует перегружать с помощью дружественных функций

Оператор инкремента и декремента следует перегружать с помощью функции члена – класса, а остальные с помощью дружественных функций

Оператор инкремента и декремента следует перегружать с помощью дружественной функции, а остальные с помощью функции – члена класса

c

61

Имеется следующее объявление класса class X. Каким видом прототипа перегруженного оператора префиксного инкремента следует пользоваться?

X operator(int)++

X& operator(int)++

X operator()++

X& operator()++

d

62

Имеется следующее объявление класса class X. Каким видом прототипа перегруженного оператора постфиксного инкремента следует пользоваться?

X operator(int)++

X& operator(int)++

X operator()++

X& operator()++

a

63

Имеется следующее объявление класса class X. Каким видом прототипа перегруженного оператора префиксного декремента следует пользоваться?

X operator(int)--

X& operator(int)--

X operator()--

X& operator()--

d

64

Имеется следующее объявление класса class X. Каким видом прототипа перегруженного оператора постфиксного декремента следует пользоваться?

X operator(int)--

X& operator(int)--

X operator()--

X& operator()--

a

65

Допускают ли объекты ввода и вывода копирование и присваивание

Объекты ввода и вывода допускают копирование и присваивание

Объекты ввода и вывода не допускают копирование и присваивание

Объекты ввода допускают, а объекты вывода не допускают копирование и присваивание

Объекты вывода допускают, а объекты ввода не допускают копирование и присваивание

b

66

К какому классу принадлежит объект cin?

Объект cin принадлежит к классу iostream

Объект cin принадлежит к классу istream

Объект cin принадлежит к классу ifstream

Объект cin принадлежит к классу ostream

b

67

К какому классу принадлежит объект cout?

Объект cout принадлежит к классу iostream

Объект cout принадлежит к классу ofstream

Объект cout принадлежит к классу istream

Объект cout принадлежит к классу ostream

d

68

Какой заголовок необходимо включать для организации файлового ввода?

iostream

fstream

iosfwd

iostream или fstream

b

69

Переменные какого класса необходимо создавать для работы с файловым вводом?

ifstream

istream

ifstream или istream

ios

a

70

Какую функцию следует вызвать для связывания объекта классового типа и конкретного файла?

Следует вызвать функцию open()

Следует вызвать функцию fopen()

Следует вызвать функцию is_open()

Следует вызвать функцию open() или fopen()

a

71

Какой заголовок необходимо включать для организации файлового вsвода?

iostream

fstream

iosfwd

iostream или fstream

b

72

Переменные какого класса необходимо создавать для работы с файловым выводом?

ofstream

ostream

ofstream или ostream

ios

a

73

Имеются ли существенные преимущества и в чем они состоят при использования механизма исключений по сравнению с контролем кодов ошибок?

Механизм исключений это все лишь обобщение аппарата контроля ошибок на работу с классами

Механизм исключений позволяет разработчику класса самостоятельно справиться с ошибками

Механизм исключений упрощает работу с ошибками для клиента класса

Механизм исключений принципиально изменяет работу с ошибками. Это структурированный подход к работе с ошибками, разделяющий ее между разработчиком и клиентом класса

d

74

С помощью какого ключевого слова выполняется выброс исключение?

catch

throw

try

return

b

75

Какой тип следует выбирать для объекта, который выбросит инструкция throw?

Строковый

Числовой

Строковый или числовой

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

d

76

Требуется или нет выделять память для хранения объекта, который выбросит инструкция throw? Если память выделять надо, то в какой области ОП это следует делать

Выделять память надо. Лучше всего для этой цели подойдет локальный объект

Выделять память надо. Лучше всего для этой цели использовать динамическую память

Выделять память надо. Лучше всего для этой цели подойдет статическая память

Выделять память не надо. О сохранности выброшенного объекта позаботиться компьютер

d

77

С помощью каких ключевых слов строятся обработчики?

throw

catch

try и catch

try и throw

c

78

Где следует размещать обработчики исключений?

В функции main()?

В программном коде, в котором эти ошибки могут возникнуть

В программном коде клиента

В функции main() или в программном коде, в котором эти ошибки могут возникнуть

c

79

Поясните термины шаблон функции и шаблон класса

Это описание соответственно универсальной функции и универсального класса, которые клиент может модифицировать

Это описание соответственно семейства функций и семейства классов, на основании которых компилятор строит определение конкретных функций и конкретных классов

Это совокупность описаний соответственно конкретных функций и конкретных классов

Это описание соответственно ограниченного семейства функций и ограниченного семейства классов, на основании которых компилятор строит определение конкретных функций и конкретных классов

b

80

Где задаются параметры шаблона?

В функции main()

В заголовке шаблона (префиксе шаблона)

В точке обращения к шаблону

В теле шаблона

b

81

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

Основным способом является явный

Основным способом является неявный

Стандарт С++11 рекомендовал считать основным явный способ

Стандарт С++11 рекомендовал считать основным неявный способ

b

82

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

Основным способом является явный

Основным способом является неявный

Стандарт С++11 рекомендовал считать основным явный способ

Стандарт С++11 рекомендовал считать основным неявный способ

a

83

Из каких основных компонентов состоит библиотека STL?

Основу библиотеки STL составляют контейнеры

Основу библиотеки STL составляют контейнеры и объекты – функции

Основу библиотеки STL составляют контейнеры, алгоритмы и итераторы

Основу библиотеки STL составляют контейнеры, алгоритмы и объекты – функции

c

84

Какие следующих контейнеров библиотеки STL: array, vector и deque могут расширяться (увеличивать свой размер)?

Все перечисленные контейнеры

Все перечисленные контейнеры, кроме контейнера array

Все перечисленные контейнеры, кроме контейнера vector

Все перечисленные контейнеры, кроме контейнера deque

b

85

Каким образом можно выполнить сортировку контейнеров vector и list?

Для сортировки обоих контейнеров можно воспользоваться алгоритмом sort()

Для сортировки содержимого контейнера vector можно воспользоваться алгоритмом sort(), для контейнера list – его функциями

Для сортировки содержимого обоих контейнеров следует использовать их функциями

Для сортировки контейнера vector следует использовать его функции, а для контейнера list – алгоритм sort()

b

86

Необходимо выполнить инициализацию контейнеров vector и list. Можно ли при создании одного типа выполнить его инициализацию содержимом другого контейнера?

Можно при создании одного типа выполнить его инициализацию содержимом другого контейнера

Нельзя при создании одного типа выполнить его инициализацию содержимом другого контейнера

При создании контейнера vector можно его инициализировать содержимым контейнера list, а при создании контейнера list нельзя инициализировать содержимым контейнера vector

При создании контейнера vector его нельзя инициализировать содержимым контейнера list, а при создании контейнера list можно инициализировать содержимым контейнера vector

a

87

Могут или нет контейнеры array и vector библиотеки STL расширяться?

Оба контейнера array и vector библиотеки STL расширяться не могут

Оба контейнера array и vector библиотеки STL могут расширяться

Контейнер vector может расширяться, а контейнер array расширять не может

Контейнер vector не может расширяться, а контейнер array может расширяться

c

88

В каких языках программирования: C++, C# и Java реализовано множественное наследование?

Во всех перечисленных языках множественное наследование реализовано

Не в одном из перечисленных языках множественное наследование не реализовано

Множественное наследование реализовано только в языке С++

Множественное наследование реализовано только в языке С#

c

89

Можно ли обычную функцию – член класса наделить виртуальными свойствами?

Такая возможность отсутствует

Это можно сделать, вызвав в теле обычной функции класса public виртуальную функцию

Это можно сделать, вызвав в теле обычной функции класса protected виртуальную функцию

Это можно сделать, вызвав в теле обычной функции класса виртуальную функцию

d

90

Допустимо или нет передавать в конструкторе копирования передавать копируемый объект по значению?

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

Допустимо

Недопустимо. Возможна бесконечная рекурсия

Недопустимо. Скорее всего компилятор выдаст сообщение об ошибке

d

91

Приводит ли к негативным последствиям объявление деструктора виртуальным для автономного класса?

Не приводит

Приводит, появляются дополнительные временные затраты на время выполнения

Приводит, появляются дополнительные затраты на память

Приводит, к дополнительным затратам на время выполнения и память

b

92

Какова цена использования аппарата виртуальных функций?

Негативные последствия при использовании виртуальных функций отсутствуют

Имеются дополнительные временные затраты

Имеются дополнительные затраты на память

Имеются как дополнительные затраты на время, так и на память

d

93

Определите, допущена ли ошибка в программном коде, приведенном ниже. Если ошибка имеется, следует указать к каким последствиям она приведет.

#include<stdio.h> class X {

public:

X(X obj); //…

};

В программе ошибки нет

В программе имеется ошибка, которая скорее всего приведет к появлению сообщения об ошибке на этапе компиляции

В программе имеется ошибка, которая приведет к зависанию компьютера

В программе имеется ошибка, которая приведет к неопределенному поведению компьютера

b

94

Где используются понятия статического и динамического типа указателя?

При работе с виртуальными функциями

При работе со статическими функциями

При работе с массивами указателей

При работе с массивами указателей на статические функции

a

95

Обязательно ли виртуальная функция должна быть объявлена в разделе public?

Виртуальная функция обязательно объявлять в разделе public

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

Интерфейс класса преимущественно должен быть невиртуальным

Нет соображений, препятствующих объявлению виртуальных функций в разделе public

c

96

Имеется абстрактный класс X.

class X { public: X(); virtual void foo() = 0; //… };

Какие из приведенных строк клиентского кода являются недопустимыми (вызовут сообщения об ошибке на этапе компиляции)?

X x1; //#1 X f1(); //#2 X* f2(); //#3 void f3(const X& r); //#4

Все четыре строки недопустимы

Недопустима только строка #1

Недопустимы строки #1 и #2

Недопустима только строка #2

c

97

Имеется абстрактный класс B.

class B { public: B(); virtual void bar() = 0; virtual int f(); //… };

Какие из приведенных строк клиентского кода являются недопустимыми (вызовут сообщения об ошибке на этапе компиляции)?

B b1; //#1 X f1(); //#2 void f2(X obj); //#3 void f3(const X& r); //#4

Все четыре строки недопустимы

Недопустима только строка #1

Недопустимы строки #1, #2 и #3

Недопустима только строка #2

c

98

Имеются два класса B и D, содержащие виртуальные функции. Определите, какие из приведенных строк их определений являются недопустимыми (вызовут сообщения об ошибке на этапе компиляции)?

сlass B { public: virtual void f1(); // #1 void f2(); // #2 void f3(); // #3 };

сlass D : public B { public: void f1()override; // #4 void f2()override; // #5 void f3()override; // #6 };

#2 и #5

#1 и #4

#5 и #6

#2 и #3

c

99

Имеется ли в языке С++ возможность запретить использование конструктора копирования и оператора присваивания?

Нет такой возможности как для конструктора копирования, так и для оператора присваивания

Такая возможность имеется как для конструктора копирования, так и для оператора присваивания

Такая возможность имеется только для конструктора копирования

Такая возможность имеется только для оператора присваивания

b

100

Можно ли перегрузить шаблоны функций и шаблоны классов?

Можно перегрузить и шаблоны функций, и шаблоны классов

Нельзя перегрузить ни шаблоны функций, ни шаблоны классов

Можно перегрузить шаблоны функций и нельзя перегрузить шаблоны классов

Можно перегрузить шаблоны классов и нельзя перегрузить шаблоны функций

c