91 вопрос с ответами
Последний раз тест был сдан на 100 баллов из 100 "Отлично".
Год сдачи 2021-2023.
После покупки Вы получите файл с ответами на вопросы которые указаны ниже:
***(Если нужна помощь с другими предметами или сдачей тестов онлайн, пишите в личные сообщения https://studwork.ru/info/147162 )
1. Специальный конструктор в языке программирования C++, и в некоторых других языках программирования, применяемый для создания нового объекта, как копии уже существующего:
*конструктор копирования
*конструктор по умолчанию
*именованный конструктор
2. Предсказать результат следующей программы:
*на экран выведется «C»
*на экран выведется строка «Compiler Error», т.к. компилятор увидит ошибку в строке 1
*на экран выведется «B»
*на экран выведется строка «Garbage Value», т.к. компилятор не сможет запустить конструктор
3. Сущности, использующиеся для получения доступа к отдельным данным в контейнере.
*итераторы
*классы
*переменные
4. Все контейнерные классы предоставляют …
*виртуальные методы
*стандартизованный интерфейс
*свойства функций
5. Установите соответствия между языками и видами программирования.
A. С++
B. 1C
C. Haskell
D. объектно-ориентированное программирование
E. процедурное программирование
F. функциональное программирование
6. Конструкторы подчиняются тем же правилам относительно типов параметров, что и … *перегруженные функции
*деструкторы
*методы
7. Указателем базового класса можно воспользоваться для …
*определения виртуального метода
*указания на объект производного класса
*защиты объекта производного класса
8. Определение функции, в которой типу обрабатываемых данных присвоено условное обозначение - это...
*прототип функции
*шаблон функции
*виртуальный метод
9. Установите соответствие между операторами и их значениями
A. ^=
B. &=
C. >>=
D. выполнение операции побитового исключающего ИЛИ для значений первого и второго операндов, сохранение результата в объект, указанный первым операндом
E. выполнение операции побитового И для значений первого и второго операндов, сохранение результата в объект, указанный первым операндом
F. сдвиг значения первого операнда вправо на количество битов, заданное значением второго операнда; сохранение результата в объект, указанный первым операндом
10. Установите соответствие между открытиями и их создателями:
A. первая программа для аналитической машины
B. аналитическая машина
C. ткацкий станок с перфокартами
D. Ада Августа Лавлейс
E. Чарльз Беббидж
F. Жозеф Мари Жаккар
11. Роль наследования в ООП такая же, как у функций в процедурном языке программирования, т.е. сократить размер кода и упростить связи между элементами программы. В определенных ситуациях могут появиться некоторые проблемы, связанные со множественным наследованием. Рассмотрим наиболее общую проблему. Допустим, что в обоих базовых классах существуют методы с одинаковыми именами, а в производном классе метода с таким именем нет. Рассмотрим пример. Как в этом случае объект производного класса определит, какой из методов базовых классов выбрать?
*проблема решается путем использования оператора разрешения, определяющего класс, в котором находится метод. Таким образом, «ObjC.A::show ( )» направляет нас к версии метода show(), принадлежащей классу A, а «objC.B::show ( )» направляет нас к методу, принадлежащему классу B, Б
*проблема решается путем использования перегрузки функций. Таким образом, «ObjC.A::show ( )» направляет нас к версии метода show(), принадлежащей классу С, а «objC.B::show ( )» направляет нас к методу, принадлежащему классу A
*проблема решается путем использования оператора наследования. Таким образом, «ObjC.A::show ( )» направляет нас к версии метода show(), принадлежащей классу B, а «objC.B::show ( )» направляет нас к методу, принадлежащему классу C
12. Важный момент при наследовании - это перегруженные функции - методы класса-потомка. Если в классе-родителе и в его классах-потомках встречаются методы с одинаковым именем, то для объектов класса-потомка, компилятор будет использовать методы именно класса-потомка. Перегруженные методы класса-потомка, могут вызывать методы класса-родителя. В таком случае, важно помнить, что необходимо правильно определить область действия с помощью оператора «::». Иначе, компилятор воспримет это, как вызов функцией самой себя. Наглядно, если бы мы перегрузили в классе функцию - это выглядело бы так. Опишите, что указывает данная запись кода:
*эта запись указывает компилятору — если значение FirstClass не равно нулю — вызвать метод show_value() класса value. А он, в свою очередь, отобразит это значение на экране
*эта запись указывает компилятору — если значение value не равно нулю — вызвать метод FirstClass класса show_value(). А он, в свою очередь, отобразит это значение на экране
*эта запись указывает компилятору — если значение value не равно нулю — вызвать метод show_value() класса FirstClass. А он, в свою очередь, отобразит это значение на экране
13. В определении класса члены класса с ключевым словом private доступны:
*любой функции программы
*в случае, если вам известен пароль
*методам этого класса
14. Если существует два класса, один базовый, другой унаследованный от базового, то при необходимости вызова, последовательность будет следующая:
1 вызов конструктора базового класса
2 вызов конструктора унаследованного класса
3 компиляция
15. Процесс создания новых классов, называемых наследниками или производными классами, из уже существующих или базовых классов– это …
*полиморфизм
*абстрагирование
*наследование
16. Правило трёх (также известное как «Закон Большой Тройки» или «Большая Тройка») - это правило в C++, гласящее, что если класс или структура определяет один из следующих методов, то они должны явным образом определить все три метода:
*деструкторы, конструкторы, оператор присваивания
*деструкторы, методы, функции
*конструкторы, классы, объекты
17. Обработка исключений, возбужденных оператором throw, идет по следующей схеме:
1завершается выполнение защищенного try-блока: раскручивается стек подпрограмм, вызываются деструкторы для тех объектов, время жизни которых истекает и т.д.
2 создается статическая переменная со значением, заданным в операторе throw. Она будет существовать до тех пор, пока исключение не будет обработано. Если переменная-исключение является объектом класса, при ее создании работает конструктор копирования
3 выполняется поиск первого из catch-блоков, который пригоден для обработки созданного исключения
18. В представленной программе используются throw, try и catch вместе. Результат выполнения программы следующий: We caught an int exception with value -1. Continuing our way! Опишите как работают блоки.
*оператор try используется для генерации исключения -1 типа int. Затем блок throw обнаруживает оператор try и перемещает его в соответствующий блок catch, который обрабатывает исключения типа int. Блок catch типа int и выводит соответствующее сообщение об ошибке
*оператор throw используется для генерации исключения -1 типа int. Затем блок try обнаруживает оператор throw и перемещает его в соответствующий блок catch, который обрабатывает исключения типа int. Блок catch типа int и выводит соответствующее сообщение об ошибке
*оператор throw определяет тип объекта для генерации исключения -1 типа int. После чего блок try удаляет оператор throw и инициирует блок catch, который обрабатывает исключения
19. Виртуальные методы – это один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом, базовый класс определяет способ работы с объектами, и любые его наследники могут предоставлять конкретную реализацию этого способа. Общий шаблон объявления чисто виртуального метода следующий:
* virtual тип_результата имя_метода(список_аргументов)=0; Метод в классе можно не описывать, а только объявить. Другими словами, в классе допустимо указать тип результата метода, его название и аргументы, а программный код тела метода не указывать. Такие методы называются чисто виртуальными и описываются с ключевым словом virtual. Заканчивается описание чисто виртуального метода знаком равенства и нулем
*virtual имя_метода(список_аргументов) Метод в классе можно не описывать, а только объявить. Другими словами, в классе допустимо указать тип результата метода, его название и аргументы, а программный код тела метода не указывать. Такие методы называются чисто виртуальными и описываются с ключевым словом virtual. Заканчивается описание чисто виртуального метода списком аргументов
*virtual тип_результата (список_аргументов)=0; Метод в классе можно только описать. Другими словами, в классе допустимо указать тип результата метода, программный код и аргументы. Такие методы называются чисто виртуальными и описываются с ключевым словом virtual. Заканчивается описание чисто виртуального метода знаком равенства и нулем
20. Предположим, что класс Derv является частным производным класса Base. Мы определяем объект класса Derv, расположенный в функции main(). Через него мы можем получить доступ к:
*членам класса Derv, объявленным как public
*членам класса Derv, объявленным как protected
*членам класса Derv, объявленным как private
*членам класса Base, объявленным как public
21. Установите последовательность создания конструктора:
1 прописывается конструктор
2 указываются аргументы
3 запускается компиляция
22. Роль наследования в объектно-ориентированном программировании заключается в:
*сохранении информации и обеспечении перегрузок
*сокращении размера кода, упрощении связи между элементами программы
*организации иерархической управляемости
23. Описать работу кода программы:
*здесь функция operator++() создает новый объект класса Counter, для использования его в качестве возвращаемого значения. Далее, функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c1 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c2 = ++c1
*здесь функция operator++() создает новый объект класса Counter, названный temp, для использования его в качестве возвращаемого значения. Она сначала увеличивает переменную count в своем объекте, а затем создает объект temp и присваивает ему значение count, то же значение, что и в собственном объекте. В конце функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c1 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c2 = ++c1
*здесь функция operator () создает новый объект класса Counter, названный temp, для использования его в качестве возвращаемого значения. Она сначала увеличивает переменную count в своем объекте, а затем создает объект temp и присваивает ему значение count, то же значение, что и в собственном объекте. В конце функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа c2 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c1 = ++c2
24. Укажите последовательность написания кода:
1 пишем значение переменной количества часов преподавателя
2 пишем фамилию имя отчество учителя
3 пишем вывод фамилии имени отчества учителя
4 пишем вывод «Количества часов:»
25. Особый вид оператора присваивания, используемый для присваивания объектов одного класса друг другу …
*… оператор присваивания
*… оператор сложения
* … оператор деления
26. Специальная функция класса, которая вызывается при создании нового объекта этого класса и предоставляет возможность инициализировать объекты во время их создания и гарантировать, что все данные члены будут иметь корректные значения это …
*Конструктор
*… деструктор
*… процедура
27. Структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии – это …
*класс
*объект
*метод
28. Операция присваивания копированием – это особый вид операции присваивания, используемый для присваивания объектов одного класса друг другу. Является одним из особых членов-функций и генерируется автоматически компилятором в случае, если нет явного объявления программистом. Код, сгенерированный компилятором и выполняет побитовое копирование. Операция присваивания копированием отличается от конструктора копирования тем, что должна очищать члены-данные цели присваивания (и правильно обрабатывать самоприсваивание), тогда как конструктор копирования присваивает значения неинициализированным членам-данным. Опишите работу кода программы:
*для начала защищаем от неправильного самоприсваивания, затем выделяем «новую» память и копируем элементы. Далее, освобождаем «старую» память и в конце присваиваем значения в «новой» памяти объекту
*для начала используем оператор выбора члена для выбора члена структуры. Затем выделяем новый массив данных, далее удаляем массив, а затем создаем новый
* для начала объявляем переменную типа класса, определяем функцию член. Затем связываем методы с объектами класса, далее возвращаем значения в «новой» памяти объекту
29. ключевое слово virtual используется …
*… для использования функции как виртуальной
*… для определения функции как виртуальной
*… для объявления функции как виртуальной
30. Проставьте порядок выполнения кода поэтапно.
1 заменить новыми значениями
2 вывести содержимое
3 создать вектор
4 внести данные в конец вектора
31. Перед Вами код. Опишите его результат.
*код выведет на экран Hello world;. Согласно стандарту, выбор одной из перегруженных функций осуществляется по правилу «Наиболее подходящей функции»
*код выведет на экран int:1 bool:1 bool:1. . "Hello world" имеет тип const char* и приведение его к POD-типу bool целесообразней чем к типу std::string
*код ничего не выведет на экран. Приведения типов нет
32. Стек – это динамическая структура сохранения данных, которая работает по принципу «последний пришел — первый вышел» (Last-In First-Out). В стеке добавление новых элементов и удаление существующих элементов производится с одного конца, который называется вершиной стека. Организация данных с помощью стека эффективна, когда нужно реализовать: обмен данными между методами приложения с помощью параметров; синтаксический анализ разнообразных выражений. Рассмотрим пример. Выберете, что будет результатом программы:
*программа попросит ввести шесть любых целых чисел. Например: 9 5 2 1 5 6. Затем выведет строку, где будет указан верхний элемент стека – 6. Далее, будет предложение удаления верхнего элемента. Затем, опять будет указан новый верхний элемент стека – 5. Далее, выведется строка – «Process returned 0 (0x0) execution time: 0.010 s. Press any key to continue
*программа попросит ввести шесть любых целых чисел. Например: 9 5 2 1 5 6. Затем выведет строку, где будет указан верхний элемент стека – 9. Далее, будет предложение удаления верхнего элемента. Затем, опять будет указан новый верхний элемент стека – 5
*программа попросит ввести пять любых целых чисел. Например: 5 2 1 5 6. Затем выведет строку, где будет указан верхний элемент стека – 6. Далее, будет предложение добавления верхнего элемента. Затем, опять будет указан новый верхний элемент стека. Далее выведется строка – «Process returned 0 (0x0) execution time : 0.010 s. Press any key to continue
33. Чтобы в блоке try сгенерировать исключительную ситуацию, нужно использовать оператор throw. Оператор throw может быть вызван внутри блока try или внутри функции, которая вызывается из блока try. Общая форма оператора throw: throw исключение; В результате выполнения оператора throw генерируется исключение некоторого типа. Это исключение должно быть обработано в блоке catch. Рассмотрим пример использования блока try…catch. Демонстрируется использование блока try…catch для обработки выражения. В данном выражении, в трех случаях может возникнуть исключительная ситуация: - корень из отрицательного числа a,
*если a если пользователь введет a = 5 и b = 0, то ответ ошибки будет следующим: «Division by 0»
*если пользователь введет a = 5 и b = 0, то ответ ошибки будет следующим: «Negative root»
*если пользователь введет a = 2 и b = 0, то ответ ошибки будет следующим: «Out of range»
34. Специальный метод без параметров, имя которого состоит из символа ~ и имени класса это …
*… конструктор
*… деструктор
*… процедура
35. Иерархия классов …
*показывает те же взаимоотношения, что и схема организации
*описывает взаимоотношение типа «имеет»
*описывает взаимоотношения типа «является частью»
*показывает те же взаимоотношения, что и наследственное дерево
36. В C ++ функция может указывать исключения, которые она генерирует, с помощью ключевого слова:
* throw
*catch
*try
37. Перед Вами код. Опишите его работу.
*в этом классе два скрытых поля – health и ammo, получить значения которых извне можно с помощью методов get_health() и get_ammo()
*в этом классе четыре скрытых поля – int x, int y, int scale, int position, получить значения которых извне, можно с помощью методов void draw
*в этом классе одно скрытое поле – health, получить значения которых извне, можно с помощью метода int get_ammo()
38. Ключевыми элементами методологии объектно-ориентированного проектирования, связанного с наследованием относят: 1) выбор надлежащей совокупности типов; 2) проектирование взаимосвязей между типами и применение наследования для использования общего кода; 3) использование виртуальных функций для полиморфной обработки родственных объектов. Опишите код программы, содержащую наследование:
*в коде описано открытое наследование. В результате данные из базового класса остаются в производном классе
*в коде описано закрытое наследование. В результате данные из производного класса закрыты от данных базового класса
*в коде описано защищенное наследование. В результате данные из базового класса защищены от данных производного класса
39. Опишите процесс выполнения конструкторов при порождении из нескольких классов поэтапно.
1 конструктор порожденного класса
2 конструкторы членов, являющихся объектами класса
3 конструкторы базовых классов в порядке их задания
40. Исключительные ситуации, возникающие при работе программы, можно разделить на два основных типа:
*синхронные и асинхронные
*простые и сложные
*с данными и без данных
41. Проставьте последовательность функций классов-контейнеров в языке C++
1 создание пустого контейнера (через конструктор)
2 удаление объекта из контейнера ; добавление нового объекта в контейнер
3 доступ к сохраненным объектам
4 просмотр количества объектов, находящихся на данный момент в контейнере
5 очистка контейнера от всех объектов
6 сортировка объектов/элементов (не всегда)
42. Операторы присваивания хранят значение в объекте, указанном левым операндом. Существует два вида операций присваивания:
*простое присваивание, множественное присваивание
*логическое присваивание, составное присваивание
*простое присваивание, составное присваивание
43. Конструктор копирования должен иметь в качестве параметра ссылку, потому что …
* иначе при передаче параметра по значению конструктор будет вызываться рекурсивно
*функция-член класса может иметь в качестве параметра только ссылку переменная, передаваемая
*по ссылке, может быть изменена
44. При описании нового объекта с инициализацией другим объектом этого же типа вызывается …
*конструктор по умолчанию
*конструктор копирования
*конструктор с параметром-объектом
45. Если есть два класса, один из которых базовый, а другой - унаследованный от базового, то последовательность вызовов следующая:
1 вызов конструктора базового класса
2 вызов конструктора унаследованного класса
3 компиляция
46. Проставьте последовательность работы конструкций исключительных ситуации:
1 catch
2 throw
3 try
47. Проставьте последовательность стандартных исключений в иерархии родительско-дочерних классов.
1std:logic_failure
2 std:exception
3 std:domain_error
48. Реакция на исключительное обстоятельство, которое возникает во время работы программы - это …
*исключение
*обработка
*уничтожение
49. Проставьте создание языков программирования в исторической последовательности (от старого до нового):
1C++
2 Simula
3 Java
4 Python
50. Классы, предназначенные для хранения данных, организованных определенным образом:
*… контейнерные классы
*… классы-операторы
* … классы-методы
51. Представлен код программы. Какой результат выполнения?
*на экран выведется «Compiler Error in line cout
*на экран выведется «Garbage Values»
*на экран ничего не выведется
*на экран выведется «Compiler Error in line cout << t.getX() << " ";»
*на экран выведется «Compiler Error in line cout << t.getY();»
52. Классы, предназначенные для хранения данных, организованных определенным образом:
*… контейнерные классы
*… классы-операторы
*… классы-методы
53. Проставьте последовательность алгоритма процесса присваивания
1 вычислить левостороннее значение первого операнда. На этом этапе становится известным местонахождение целевого объекта, приёмника нового значения
2 вычислить правостороннее значение второго операнда. Этот этап может быть сколь угодно большим и включать другие операторы, в том числе оператор присвоения
3 присвоить вычисленное правостороннее значение левостороннему значению. Во-первых, при конфликте типов должно быть осуществлено их приведение (либо, выдано сообщение об ошибке, ввиду его невозможности). Во-вторых, собственно присваивания значения в современных языках программирования может быть подменено, может включать не только перенос значений ячеек памяти
4 возвратить вычисленное правостороннее значение, как результат выполнения операции
54. Контейнеры бывают …
*последовательные и ассоциативные
*простые и множественные
*логические и придуманные
55. Использование виртуальных функций для полиморфной обработки родственных объектов относят к:
*элементам методологии наследования в ООП
*элементам абстрагирования
*элементам инкапсуляции данных
56. При множественном наследовании может сложиться ситуация, когда один и тот же базовый класс наследуется (через разные цепочки наследования) в производном классе несколько раз. Обычно, в этом ничего хорошего нет, т.к. нередко такие ситуации приводят к ошибкам. С другой стороны, совсем избежать подобных ситуаций бывает проблематично. Выход состоит в том, чтобы при создании цепочки наследования, использовать виртуальные базовые классы. Перед Вами код. Выберите, какой будет результат кода.
*Base NonVirtual called. Base Virtual called. Base NonVirtual called. Derived Virtual called
*Base NonVirtual called. Derived Virtual called
*Base NonVirtual called. Base Virtual called. Base NonVirtual called
57. Конструктор — это особый тип метода класса, который автоматически вызывается при создании объекта этого же класса. Деструктор — это специальный тип метода класса, который выполняется при удалении объекта класса. В то время, как конструкторы предназначены для инициализации класса, деструкторы предназначены для очистки памяти после него. Т.о., опишите код программы:
*в коде описывается класс «date», он имеет переменные день и год. Здесь применен деструктор date(). Он удаляет с динамической памяти объект «month»
*в коде описывается класс «day» и «year», данные имеют открытый тип. Здесь применен конструктор date()
*в коде описывается класс «date», он имеет переменные месяц и год. Здесь применен деструктор date(). Он удаляет с динамической памяти объект «month»
58. Посмотрите код и напишите алгоритм его создания
1определение переменных
2 вывод на экран
3 увеличение значения
4 вывод на экран значений с1, с2
59. Множественное наследование – это наследование, при котором создание производного класса основывается на …
*использовании нескольких непосредственных базовых классов
*использовании одного базового класса
*использовании нескольких непосредственных виртуальных классов
60. Синтаксис наследования выглядит так:
*class имя: тип_наследования имя_базового_класса {// программный код производного класса}
*classname имя: имя_базового_класса {// программный код производного класса}
* class имя: тип_наследования {// программный код производного класса}
61. Для работы с очередью вам понадобится знать функции: push(), pop(), front(), back(), empty(). 1) Для добавления в очередь нового элемента нужно воспользоваться функцией — push(). В круглых скобках должно находится значение, которое мы хотим добавить. 2) Если нам понадобилось удалить первый элемент нужно оперировать функцией pop(). В круглых скобках уже ничего не нужно указывать, но по правилам, они должны присутствовать! Эти функции не нуждаются в указании аргумента: empty(), back() и front(). 3) Если вам понадобилось обратиться к первому элементу очереди, то вам понадобится функция front(). 4) Чтобы обратиться к последнему элементу в очереди, вам поможет функция back(). 5) Чтобы узнать, пуста ли очередь, нужно воспользоваться функцией empty(). Если ваша очередь пуста — возвратит true. Если в ней что-то есть — возвратит false. В коде (нижмы использовали все выше перечисленные методы. Выберете, что будет результатом программы:
*пользователь должен ввести 6 чисел. Затем будет указан самый первый элемент в очереди. Потом он будет удален и выведен на экран новый, первый элемент (после удаления). Далее, будет выведен на экран последний элемент в очереди
*пользователь должен ввести 7 чисел. Затем будет указан самый первый элемент в очереди. Потом он будет удален и выведен на экран новый, первый элемент (после удаления). Далее, строка «Очередь не пуста! и «Process returned 0 (0x0) execution time : 0.010 s. Press any key to continue»
*пользователь должен ввести 5 чисел. Затем будет указан самый первый элемент в очереди. Потом он будет удален и выведен на экран новый первый элемент (после удаления). Далее, строка «Очередь не пуста!»
62. Установите соответствие между операторами и их значениями:
A. =
B. *=
C. /=
D. сохранение значения второго операнда в объект, указанный первым операндом
E. умножение значения первого операнда на значение второго операнда, сохранение результата в объект, указанный первым операндом
F. деление значения первого операнда на значение второго операнда, сохранение результата в объект, указанный первым операндом
63. Набор согласованных обобщённых алгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций в C++
*… библиотека типов данных
*… библиотека стандартных шаблонов
*… библиотека функций
64. Проставьте открытия в программировании в исторической последовательности:
1 ткацкий станок с перфокартами
2 аналитическая машина
3первая программа для аналитической машины
4 объектно-ориентированное программирование
65. Векторы — это умные массивы. Они занимаются автоматическим размещением себя в памяти, расширением и сужением своего размера по мере вставки или удаления данных. Векторы можно использовать в какой-то мере как массивы, обращаясь к элементам, с помощью привычного оператора []. Случайный доступ выполняется очень быстро в векторах. Также, довольно быстро осуществляется добавление (или проталкиваниновых данных в конец вектора. Когда это происходит, размер вектора автоматически увеличивается для того, чтобы было куда разместить новое значение. Рассмотрим код программы. Выберете, что демонстрирует данный пример.
*заполнение данными методом insert(). Метод insert() имеет два параметра: будущее расположение нового элемента в контейнере и значение элемента. Прибавляем две позиции к результату выполнения метода begin(), чтобы перейти к элементу № 2 (третий элемент в контейнере, считая с нуля). Элементы от точки вставки до конца контейнера сдвигаются, чтобы было место для размещения вставляемого. Размер контейнера автоматически увеличивается на единицу
*для создания вектора v используется штатный конструктор вектора без параметров. Как с любыми контейнерами STL, для задания типа переменных, которые будут храниться в векторе, используется шаблонный формат (в данном случае это тип int). Мы не определяем размер контейнера, поэтому вначале он равен 0. Метод push_back() вставляет значение своего аргумента в конец вектора (конец располагается там, где находится самый большой индекс). Начало вектора (элемент с индексом 0), в отличие от списков и очередей, не может использоваться для вставки новых элементов
*если переменной main присвоить значение true, то push_back() никогда не будет удален, память никогда не будет освобождена и произойдет утечка памяти. Однако, если бы push_back() был вектором, то подобное никогда бы и не произошло, так как память освобождалась бы автоматически, при выходе push_back() из области видимости (независимо от того, выйдет ли функция раньше из области видимости или нет). Именно из-за этого, использование std::vector является более безопасным, чем динамическое выделение памяти через оператор v
66. Проставьте историческую последовательность: как после появления объектно-ориентированного программирования развивалось это направление:
1 компонентное программирование
2 прототипно-ориентированное программирование
3 класс-ориентированное программирование
67. Установите соответствие между терминами и определениями:
A. полиморфизм
B. инкапсуляция
C. абстрагирование
D. наследование
E. метод направлен на определение точки, где единое управление лучше разделить, или наоборот, собрать воедино разделённые управления
F. принцип быстрой и надёжной организации своей иерархической управляемости
G. принцип, в котором учитывается все самое важное в предмете, для моделирования и решения конкретной задачи
H. принцип создания класса, на базе уже существующего, при этом, у нас есть возможность пользоваться функционалом (свойствами и методамбазового
68. Описать работу кода программы:
*задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В данном классе описано два конструктора для возможности создания пустой и некоторой начальной строк. Кроме того, задано два метода: GetString() и SetString(), через которые осуществляется доступ к массиву buff[], являющимся частным элементом класса. Представленный класс описывает минимальный набор функций для работы со строками. С помощью него можно задать какую-либо строку и получить ее, например, для вывода на экран
* задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В данном классе есть один конструктор для возможности создания пустой строки. Кроме того, задано два метода: GetString() и SetString(), через которые осуществляется доступ к массиву buff[], являющимся частным элементом класса. Представленный класс описывает минимальный набор функций для работы со строками. С помощью него можно задать какую-либо строку и получить ее, например, для вывода на экран
*задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В классе описаны конструкторы для возможности создания пустой и некоторой начальной строк. Кроме того, задан один метод: GetString(), через который осуществляется доступ к массиву buff[], являющимся частным элементом класса
69. Посмотрите код и напишите алгоритм его создания:
1 перегрузка оператора присваивания
2 проверка на самоприсваивание
3 выполнение копирования значений
4 возвращаем текущий объект
70. Установите соответствие между операторами и их значениями
A. += =
B. -= =
C. сложение значения первого операнда со значением второго операнда, сохранение результата в объект, указанный первым операндом
D. вычитание значения второго операнда из значения первого операнда, сохранение результата в объект, указанный первым операндом
71. Что реализуется через механизмы перегрузки (функций и операций), виртуальные функции и шаблоны?
*полиморфизм
*абстрагирование
*инкапсуляция
72. Проставьте последовательность процесса написания представленного кода:
1 создаем объект c класса C
2 указываем rParent ссылаться на часть A объекта c
3 вызываем метод rParent.getName()
4 вызываем rParent.GetName(), что приводит к вызову A::getName()
73. Основное преимущество наследования – это возможность повторного использования кода. Укажите последовательность выполнения представленного кода:
1 указываются значения в классе Child
2 прописываются доступы к к члену класса Parent
3 класс Parent описывается
4 прописывается что класс Child наследуется от Parent
74. Модификаторы доступа являются ключевыми слова, которые задают параметры доступа для классов, методов и прочих элементов в …
75. Методу класса всегда доступны данные:
76. Шаблон для создания объектов, обеспечивающий начальные значения состояний: инициализация полей-переменных и реализация поведения функций или методов – это …
77. Метод программирования, идея которого была основана на представление программы, как совокупность объектов – это…
78. При выполнении операции присваивания между существующими объектами одного типа вызывается …
79. Варианты использования (кроме всего прочего) нужны для:
80. Предсказать результат следующей программы:
81. Обычно, компилятор автоматически создает конструктор копирования для каждого класса, но в некоторых случаях, программист создает конструктор копирования, называемый:
82. Как решить вопрос о том, какой из спецификаторов использовать при наследовании? В большинстве случаев, производный класс представляет собой улучшенную или более специализированную версию базового класса. В случае, когда объект производного класса предоставляет доступ как к общим методам базового класса, так и к более специализированным методам своего класса, имеет смысл воспользоваться общим наследованием. Проставьте последовательность создания кода простого наследования:
83. Когда используется таблица виртуальных функций?
84. Перегрузка методов это механизм, который позволяет создавать несколько методов с одним и тем же именем. В результате создается иллюзия, что можно вызывать метод с разными аргументами. Перед Вами код перегрузки функции. Выберите правильное описание работы кода.
85. Последовательные контейнеры …
86. Пример работы с контейнером приведен ниже. В файле находится произвольное количество целых чисел. Программа считывает их в вектор и выводит на экран. Опишите последовательность кода:
87. Механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы, и приводят к невозможности дальнейшей отработки программой её базового алгоритма – это:
88. Особый вид оператора, используемый для присваивания объектов одного класса друг другу – это…
89. Классическим примером исключительной ситуации в С++ является:
90. Мы рассмотрим ситуацию создания динамического массива. В программе для обработки исключительных ситуаций создадим динамический массив. Единственная особенность программы в том, что размер создаваемого массива определяется пользователем уже в процессе выполнения программы: при запуске программы, появляется сообщение с просьбой ввести целое число, число считывается, и в соответствии со считанным значением создается динамический массив. Рассмотрим программный код. Каким будет результат, если после выполнения программы ввести отрицательное число.
91. Рассмотрим программный код. Каким будет результат, если после выполнения программы ввести отрицательное число.
Тема 1. Понятие класса и объекта. Данные-члены и функции-члены (методы)
Тема 2. Конструкторы и деструкторы классов
Тема 3. Копирование и присваивание для объектов класса
Тема 4. Принцип наследования и его реализация средствами языка программирования С++
Тема 5. Виртуальные функции и классы. Множественное наследование
Тема 6. Классы-контейнеры
Тема 7. Обработка исключений