Введение в объектно-ориентированное программирование.ои(dor)

Введение в объектно-ориентированное программирование.ои(dor) — вариант 3

Просмотрите все вопросы и варианты бесплатно. Правильные ответы скрыты и открываются только после получения доступа.

15 вопросов Вариант 3 Доступ 7 дней
Содержание теста

Вопросы и варианты

Без отметок и подсказок к правильным ответам

Вопрос 1

В обычном режиме компилятор автоматически формирует конструктор копирования для каждого класса, однако, в некоторых случаях, программист формирует конструктор копирования, называемый …

  1. … неявным конструктором копирования
  2. … явным конструктором копирования
  3. … конструктором по умолчанию
Вопрос 2

Конструктор копирования вызывается…

  1. при наследовании базового класса
  2. при описании нового объекта с инициализацией другим объектом этого же типа
  3. при присваивании объекта новому типу
Вопрос 3

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

  1. ссылку
  2. функцию-член
  3. переменную
Вопрос 4

«Закон Большой Тройки» или «Правило трёх» — правило в C++ гласит, что если класс или структура определяет один из следующих методов, то они должны явным образом определить все три метода. Какие три метода нужны?

  1. деструктор, оператор, функция
  2. конструктор, деструктор, оператор присваивания
  3. конструктор, класс, объект
Вопрос 5

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

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

Существует два вида операций присваивания – это…

  1. простое присваивание и составное присваивание
  2. простое присваивание и множественное присваивание
  3. логическое присваивание и составное присваивание
Вопрос 7

Операторы присваивания хранят значение в объекте, указанном левым операндом. Установите соответствие между операторами и их значениями:

  1. =
  2. *=
  3. /=
  4. сохранение значения второго операнда в объект, указанный первым операндом
  5. умножение значения первого операнда на значение второго операнда, сохранение результата в объект, указанный первым операндом
  6. деление значения первого операнда на значение второго операнда, сохранение результата в объект, указанный первым операндом
Вопрос 8

Операторы присваивания хранят значение в объекте, указанном левым операндом. Установите соответствие между операторами и их значениями

  1. +=
  2. -=
  3. сложение значения первого операнда со значением второго операнда, сохранение результата в объект, указанный первым операндом
  4. вычитание значения второго операнда из значения первого операнда, сохранение результата в объект, указанный первым операндом
  5. сдвиг значения первого операнда влево на количество битов, заданное значением второго операнда, сохранение результата в объект, указанный первым операндом
Вопрос 9

Операторы присваивания хранят значение в объекте, указанном левым операндом. Установите соответствие между операторами и их значениями.

  1. ^=
  2. &=
  3. >>=
  4. выполнение операции побитового исключающего «ИЛИ» для значений первого и второго операндов, сохранение результата в объект, указанный первым операндом
  5. выполнение операции побитового «И» для значений первого и второго операндов, сохранение результата в объект, указанный первым операндом
  6. сдвиг значения первого операнда вправо на количество битов, заданное значением второго операнда, сохранение результата в объект, указанный первым операндом
Вопрос 10

Проставьте последовательность алгоритма процесса присваивания.

  1. вычислить левостороннее значение первого операнда. На этом этапе становится известным местонахождение целевого объекта, приёмника нового значения
  2. вычислить правостороннее значение второго операнда. Этот этап может быть сколь угодно большим и включать другие операторы (в том числе присвоения)
  3. присвоить вычисленное правостороннее значение левостороннему значению. Во-первых, при конфликте типов должно быть осуществлено их приведение (либо выдано сообщение об ошибке ввиду его невозможности). Во-вторых, собственно присваивания значения в современных языках программирования может быть подменено и включать не только перенос значений ячеек памяти
  4. возвратить вычисленное правостороннее значение как результат выполнения операции
Вопрос 11

Оператор простого присваивания ( = ) вызывает сохранение значения второго операнда в объекте, указанном первым операндом. Если оба объекта имеют арифметические типы, правый операнд преобразуется в тип слева перед сохранением значения. Посмотрите код и напишите алгоритм его создания.

  1. перегрузка оператора присваивания
  2. проверка на самоприсваивание
  3. выполнение копирования значений
  4. возвращаем текущий объект
Вопрос 12

Оператор присваивания не может быть объявлен как «дружественный» к классу. Если перегрузить оператор присваивания как «дружественный» к классу, то это означает, что будет перегруженный глобальный оператор присваивания, который вызывается для экземпляров классов автоматически. Это, в свою очередь, может привести к путанице в операциях присваивания и увеличении невидимых ошибок. Поэтому, компиляторы языка C++ не допускают перегружать оператор присваивания как «дружественный» к классу. Посмотрите код и напишите алгоритм его создания.

  1. определение переменных
  2. вывод на экран
  3. увеличение значения
  4. вывод на экран значений с1, с2
Вопрос 13

Описать работу кода программы:

  1. задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В данном классе описано два конструктора для возможности создания пустой и некоторой начальной строк. Кроме того, задано два метода: GetString() и SetString(), через которые осуществляется доступ к массиву buff[], являющимся частным элементом класса. Представленный класс описывает минимальный набор функций для работы со строками. С помощью него можно задать какую-либо строку и получить ее, например, для вывода на экран
  2. задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В данном классе есть один конструктор для возможности создания пустой строки. Кроме того, задано два метода: GetString() и SetString(), через которые осуществляется доступ к массиву buff[], являющимся частным элементом класса. Представленный класс описывает минимальный набор функций для работы со строками. С помощью него можно задать какую-либо строку и получить ее, например, для вывода на экран
  3. задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В классе описаны конструкторы для возможности создания пустой и некоторой начальной строк. Кроме того, задан один метод: GetString(), через который осуществляется доступ к массиву buff[], являющимся частным элементом класса
Вопрос 14

Функция operator++() может создавать новый объект класса для использования его в качестве возвращаемого значения. Опишите работу кода:

  1. функция operator++() создает новый объект класса Counter, для использования его в качестве возвращаемого значения. Далее, функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c1 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c2 = ++c1
  2. функция operator++() создает новый объект класса Counter, названный temp, для использования его в качестве возвращаемого значения. Она сначала увеличивает переменную count в своем объекте, а затем создает объект temp и присваивает ему значение count, то же значение, что и в собственном объекте. В конце функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c1 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c2 = ++c1
  3. функция operator++() создает новый объект класса Counter, названный temp, для использования его в качестве возвращаемого значения. Она сначала увеличивает переменную count в своем объекте, а затем создает объект temp и присваивает ему значение count, то же значение, что и в собственном объекте. В конце функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c2 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c1 = ++c2
Вопрос 15

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

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