Главная / Программирование /
Язык программирования C++ / Тест 10
Язык программирования C++ - тест 10
Упражнение 1:
Номер 1
Какие виды наследования бывают (выберите наиболее полный ответ)?
Ответ:
 (1) внешнее,внутреннее,защищающее 
 (2) общее,внешнее,внутреннее,защищающее 
 (3) внешнее,внутреннее,защищенное 
Номер 2
Что будет в результате выполнения следующей программы?
class Base{
…
public: void f();
private: int *baseID;
};
class Derived : public Base{
…
public: void foo();
private: int derivedID;
};
Derived my1;
int x;
my1.baseID=&x;
Ответ:
 (1) присвоение будет выполнено 
 (2) результат непредсказуем 
 (3) ошибка компиляции 
 (4) сообщение об ошибке внутренних адресов 
Упражнение 2:
Номер 1
Если записано
class A { public: void f() { cout << 1; } };
class B : public A
{ public: void f() { cout << 2; } };
то что будет напечатано в результате выполнения кода?
B b; A& a=b; a.f();
Ответ:
 (1) 2
 
 (2) 2 1
 
 (3) 1 2
 
 (4) 1
 
 (5) ошибка  
Упражнение 3:
Номер 1
Если имеется абстрактный класс А
и производный от этого класса класс А1
то какая из записей заведомо неверна?
Ответ:
 (1) A a;
 
 (2) A1 a1;A& a=a1;
 
 (3) A* a= new A;
 
Упражнение 4:
Номер 1
Какая из записей является правильной записью абстрактного класса?
Ответ:
 (1) abstract class A { virtual int f() = 0; };
 
 (2) class A { virtual int f() = 0; };
 
 (3) class A { virtual int f(); };
 
Номер 2
Абстрактный класс – это класс, в котором
Ответ:
 (1) есть виртуальный конструктор 
 (2) есть виртуальный деструктор 
 (3) есть хотя бы один чисто виртуальный метод 
Номер 3
Имеется запись: monster
- базовый класс, demon
- производный:
// Описываются указатели:
monster *p;
demon *d;
При выполнении какого выражения всегда можно говорить,что потери информации не будет?
Ответ:
 (1) d=p
 
 (2) d=(demon*)p
 
 (3) p=d
 
 (4) (monster*)d=p
 
Упражнение 5:
Номер 1
Какой будет результат выполнения следующего кода?
class A {
public:
int inc(int x) { return ++x; };
int inc(short x) { return x + 2; };
};
A obj; int y = 5;
cout << obj.inc(y);
Ответ:
 (1) 6
 
 (2) 5
 
 (3) 4
 
 (4) 3
 
Номер 2
Произойдет ли ошибка при компиляции этого кода?
class Channel
{ public:
void SetNumber (int n) { number = n;};
int GetNumber() const { return number;};
int number;};
int main()
{ private : int n;} Channel ch;
{Channel ch;
ch.number = 9;
ch.SetNumber(10);
Channel ch2(2);}
Ответ:
 (1) нет, не произойдет 
 (2) да, произойдет, запись неверна 
 (3) произойдет при обнулении n
 
 (4) произойдет при n=10
 
Номер 3
Что содержится в записи минимального по своим возможностям класса?
Ответ:
 (1) только конструктор 
 (2) только деструктор 
 (3) только конструктор и деструктор 
 (4) по крайней мере, один метод 
 (5) по крайней мере, один атрибут 
 (6) не менее одного атрибута и хотя бы один метод-конструктор класса 
 (7) не содержится ничего 
Упражнение 6:
Номер 1
Укажите какое из выражений будет правильным?
class A
{ public : int a, b;
protected : int func (float d) {};
private : short i; } A1;
class B : public A
{ private : int k; } B1;
class C : public B
{ protected : int l, m; } C1;
Ответ:
 (1) B1.k = 3;
 
 (2) C1.a = C1.b;
 
 (3) C1.a = C1.i;
 
 (4) C1->a = C1->b;
 
Номер 2
Укажите какое из выражений будет правильным?
class A
{ public : int a, b;
protected : int z;
private : short i; } A1;
class B : public A
{ public : int c, d;
private : int k;} B1;
Ответ:
 (1) A1.i = 10; 
 (2) B1.k = A1.i; 
 (3) B1.c = A1.a; 
Номер 3
Укажите какое из выражений будет правильным?
class A
{
public : int a, b;
protected : int z;
private : short i;
} A1;
class B : protected A
{
public : int c, d;
private : int k;
} B1;
Ответ:
 (1) A1.i = 10;
 
 (2) B1.k = A1.i;
 
 (3) B1.c = A1.z
; 
 (4) A1.a = B1.d;
 
Упражнение 7:
Номер 1
Сколько производных классов можно получить из базового класса?
Ответ:
 (1) неограниченное количество 
 (2) количество производных классов определяется количеством базовых классов 
 (3) определяется наличием абстрактного класса 
Номер 2
В чем заключается принцип полиморфизма?
Ответ:
 (1) в наличии виртуальных методов 
 (2) в наличии множественного наследования 
 (3) в использовании виртуального наследования 
Номер 3
Отметьте истинное утверждение для абстрактного класса.
Ответ:
 (1) класс, у которого есть хотя бы один чисто виртуальный метод, называется абстрактным 
 (2) абстрактный базовый класс навязывает определенный интерфейс всем производным из него классам 
 (3) невозможно создать объект абстрактного класса 
 (4) в абстрактном классе нельзя определять методы 
Упражнение 8:
Номер 1
Какой результат будет у следующего выражения?
class A
{ public : int a, b;
protected : int z;
private : short i; } A1;
class B : private A
{ private : int k;} B1;
int main()
{ B1.a = 10;
cout << B1.a;
}
Ответ:
 (1) 10
 
 (2) ошибка 
 (3) 0
 
Номер 2
Какой результат будет у следующего выражения?
class A
{ public : int a, b;
protected : int z;
private : short i; } A1;
class B : protected A
{ private : int k;} B1;
int main()
{ B1.z = 20;
cout << B1.z;
}
Ответ:
 (1) 20
 
 (2) ошибка 
 (3) 0
 
Номер 3
Что выведет программа в стандартный поток вывода?
class A
{
public : int a, b;
protected : int z;
private : short id;
} A1;
class B : protected A
{ public : short t;
void ff(short a)
{ id = ++a; }
} B1;
int main()
{
B1.ff(20);
cout << B1.id;
}
Ответ:
 (1) 20
 
 (2) 21
 
 (3) 0
 
 (4) ошибка