КИМ_ООП
.doc
№ раздела и его название |
№ воп-роса |
Текст вопроса |
Варианты ответов |
Буква, соответствующая правильному ответу |
|||
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)
Какой из вариантов является наилучшим. Иными словами, что лучше возвращать: 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 |