Главная / Программирование /
Язык программирования C++ / Тест 13
Язык программирования C++ - тест 13
Упражнение 1:
Номер 1
Выберите наиболее правильный вариант объявления оператора присваивания в классе A
:
Ответ:
 (1) A& operator=(const A& a);
 
 (2) const A& operator=(const A& a);
 
 (3) A& operator=(A a);
 
 (4) A& operator=(const A a);
 
Номер 3
: Выберите наиболее правильный вариант объявления оператора +=
двух объектов класса A
:
Ответ:
 (1) A& operator+=(const A& a);
 
 (2) A& operator+=(A& a) const;
 
 (3) const A& operator+=(A& a) const;
 
Упражнение 2:
Номер 1
Класс B
наследован от класса A
. Отметьте верное для класса B
.
Ответ:
 (1) объект класса B
может использоваться как объект базового класса 
 (2) класс B
должен быть определен с ключевым словом derived
 
 (3) класс B
может непосредственно обращаться к внутренним атрибутам базового класса 
Номер 2
Для переопределенного оператора верно:
Ответ:
 (1) переопределенный оператор выполняется с тем же приоритетом, что и исходный оператор 
 (2) у переопределенного оператора не может быть аргументов по умолчанию 
 (3) переопределенный оператор может быть унарным оператором 
 (4) если переопределенный оператор не является методом класса, то у него должен быть, по крайней мере, один аргумент типа класса, определенного пользователем 
Номер 3
Функция объявлена как friend
класса. Отметьте верное.
Ответ:
 (1) функция имеет доступ к внутренним атрибутам класса 
 (2) функция-оператор должна иметь в качестве первого аргумента объект данного класса 
 (3) ключевое слово friend
не оказывает влияния на функции и операторы 
Упражнение 3:
Номер 2
Какой тип будет у следующего выражения ?
void* + reinterpret_cast<int*>1000
Ответ:
 (1) void*
 
 (2) int*
 
 (3) int
 
 (4) ошибка компиляции 
 (5) ошибка выполнения 
Номер 3
Если в классе A
определены методы
A(int x);
operator int();
operator++(int);
то какие из них будут вызваны в следующем выражении ?
A b; static_cast <int> (b + 1);
Ответ:
 (1) operator int()
, конструктор А(int x)
 
 (2) operator++(int)
, operator int()
, конструктор А(int x)
 
 (3) только конструктор А(int x)
 
 (4) только operator int()
 
 (5) operator++(int)
, конструктор А(int x)
 
Упражнение 4:
Номер 1
Нужно ли учитывать при перегрузке бинарных операций порядок следования операндов?
Ответ:
 (1) необходимо учитывать 
 (2) необходимо определять 
 (3) необязательно учитывать 
 (4) необязательно определять 
Номер 2
Какие операции поддаются перегрузке?
Ответ:
 (1) только унарные 
 (2) только бинарные 
 (3) унарные и бинарные 
Номер 3
Переопределение операции сложения приведет к(отметьте все правильные варианты)
Ответ:
 (1) ее вызову при выполнении операции ++
с объектом класса 
 (2) ее вызову при выполнении операции сложения с объектом класса 
 (3) преобразованию целых чисел к объекту данного класса при выполнении сложения 
 (4) возможному преобразованию объектов других классов к данному при выполнении операции сложения 
Упражнение 5:
Номер 1
Если определена операция умножения для двух объектов класса A
и операция преобразования к int
, что будет вызвано при
A a;
int x;
int y = a * x;
Ответ:
 (1) операция умножения, а затем преобразование к целому 
 (2) преобразование к целому 
 (3) только операция умножения 
Номер 2
Если определена операция вычитания для двух объектов класса A
, а операция преобразования к int
не определена, что будет вызвано при
A a1,a2,a3=5;
a3 = a1 – a2;
Ответ:
 (1) преобразование к целому 
 (2) операция вычитания, а затем преобразование к целому 
 (3) только операция вычитания 
 (4) произойдет ошибка 
Номер 3
Какое из следующих определений представляет собой правильную запись операции сложения целого числа и объекта:
Ответ:
 (1) friend A operator+(int a1, const A& a2);
 
 (2) friend A operator+(int a1, int a2);
 
 (3) friend void operator+(const A& a1, int a1, A res);
 
Упражнение 6:
Номер 1
Какой тип преобразования типов используется в следующем выражении?
int a = 0; float f = 3.4; a += f;
Ответ:
 (1) неявное преобразование типов 
 (2) явное преобразование типов 
 (3) пользовательское преобразование типов 
Номер 2
Какое приведение типов используется в следующем выражении?
int a = 0; float f = 3.4; f += (int)a;
Ответ:
 (1) неявное приведение типов 
 (2) явное приведение типов 
 (3) стандартное приведение типов 
Номер 3
Какие операции используются для контроля за приведением типов?
Ответ:
 (1) reinterpret_cast
 
 (2) static_cast
 
 (3) const_cast
 
 (4) basic_cast
 
Упражнение 7:
Номер 1
Какой результат будет у следующего выражения?
int m = 1, n=2;
double A = (double)m/n;
cout << A;
Ответ:
 (1) 0.5
 
 (2) 0
 
 (3) 1
 
 (4) ошибка компиляции 
Номер 2
Какой результат будет у следующего выражения?
int m = 1,n=2;
int *p= &n;
p=static_cast<int*> (m);
cout << *p;
Ответ:
 (1) 1
 
 (2) адрес переменной m
 
 (3) 2
 
 (4) ошибка компиляции 
Номер 3
Какой результат будет у следующего выражения?
int m = 10, n = 4;
double A = static_cast <double> (m)/n;
cout << A;
Ответ:
 (1) 2
 
 (2) 2.5
 
 (3) 1
 
 (4) ошибка компиляции 
Упражнение 8:
Номер 1
Если в арифметическом выражении участвуют целый и вещественный операнды, то:
Ответ:
 (1) целый тип приводится к вещественному 
 (2) вещественный тип приводится к целому 
 (3) ошибка компиляции 
Номер 2
Если в арифметическом выражении участвуют короткое целое и длинное целое, то:
Ответ:
 (1) длинное приводится к короткому 
 (2) короткое приводится к длинному 
 (3) ошибка компиляции 
Номер 3
Какой результат будет у следующего выражения?
const char* str1 = "hello";
char* str2 = const_cast ( char* ) str1;
cout << str2;
Ответ:
 (1) hello
 
 (2) h
 
 (3) hellohello
 
 (4) ошибка компиляции