Главная / Программирование /
Язык программирования C++ / Тест 11
Язык программирования C++ - тест 11
Упражнение 1:
Номер 1
Какими по умолчанию объявляются методы класса?
Ответ:
 (1) private 
 (2) public 
 (3) protected 
 (4) по умолчанию не объявляются 
Номер 2
Какими по умолчанию объявляются элементы структуры?
Ответ:
 (1) private 
 (2) public 
 (3) protected 
 (4) по умолчанию не объявляются 
Номер 3
Какими по умолчанию объявляются элементы объединения?
Ответ:
 (1) private 
 (2) public 
 (3) protected 
 (4) по умолчанию не объявляются 
Упражнение 2:
Номер 1
Что целесообразно определять в public разделе класса?
Ответ:
 (1) все,чтобы уберечь себя от ошибок 
 (2) все,что относится к интерфейсу класса 
 (3) все невиртуальные методы 
Упражнение 3:
Номер 1
Можно ли перегружать оператор разрешения области видимости -"::"
Ответ:
 (1) да 
 (2) нет 
Упражнение 4:
Номер 1
Какие из следующих объявлений метода func синтаксически правильны?
Ответ:
 (1) void func(const Foo& a); 
 (2) void func(Foo& a) const; 
 (3) void func(const Foo& a) const; 
Номер 2
Произойдет ли ошибка при использовании следующей конструкции:
class A { const int f() { . . .}; };
g(const& A a) { a.f(); . . . }?
Ответ:
 (1) не произойдет 
 (2) да, ошибка компиляции 
 (3) да, ошибка выполнения 
Номер 3
Допустима ли следующая конструкция?
class A {
int x;
int f(const A& a)
{
x = 0;
x += a.x;
return x;
}
};
Ответ:
 (1) допустима 
 (2) произойдет ошибка компиляции 
 (3) произойдет ошибка при выполнении 
Упражнение 5:
Номер 1
Отметьте правильные объявления переменных
Ответ:
 (1) const int s = 10; int a[s]; 
 (2) int s = 10; const int a[s]; 
 (3) int s = 10; int a[] = new int[s+s]; 
Номер 2
Какое из следующих объявлений является объявлением неизменяемого указателя?
Ответ:
 (1) int const* ptr; 
 (2) const int* ptr; 
 (3) int * ptr const; 
 (4) int* const ptr; 
Номер 3
Если указатель объявлен как
char sss = 't';
char ddd;
const char* ptr = &sss;
какое из следующих выражений верно:
Ответ:
 (1) *ptr++; 
 (2) (*ptr)++; 
 (3) *ptr = 'k'; 
 (4) ptr = &ddd; 
Упражнение 6:
Номер 1
Какая функция класса, не являясь его компонентом, имеет доступ к его защищенным и внутренним компонентам?
Ответ:
 (1) дружественная 
 (2) шаблонная 
 (3) макрофункция 
 (4) статическая 
Номер 2
Какой правильный вызов функции базового класса из объекта производного класса, если в производном классе эта функция была замещена?
Ответ:
 (1) FunctionName(); 
 (2) Base::FunctionName(); 
 (3) Base.FunctionName(); 
 (4) такую функцию вызывать нельзя. 
Номер 3
Какой правильный вызов функции базового класса из объекта производного класса, если в производном классе эта функция не была замещена?
Ответ:
 (1) FunctionName(); 
 (2) FunctionName.Base(); 
 (3) Base.FunctionName(); 
 (4) такую функцию вызвать нельзя 
Номер 4
Какое правильное объявление виртуальной функции, которая принимает одно целочисленное значение и возвращает void:
Ответ:
 (1) void SomeFunction(int); 
 (2) virtual SomeFunction(int); 
 (3) virtual SomeFunction(); 
 (4) virtual void SomeFunction(int); 
Упражнение 7:
Номер 1
С помощью механизма friend можно разрешить обращение к внутренним элементам класса:
Ответ:
 (1) отдельной функции 
 (2) отдельному методу другого класса 
 (3) всем методам другого класса 
Номер 2
Укажите правильное использование оператора friend
Ответ:
 (1) class A { friend int CountPass(); private: short i;}; 
 (2) class A { public : friend int A::CountPass(); private: short i;}; 
 (3) class A { public : int A1::CountPass(); friend: short i;}; 
Номер 3
Какой результат будет у следующего выражения?
class A
{ CountPass();
private: short i;
}A1;
friend A::CountPass()
{ A1.i = 23;}
Ответ:
 (1) объявление дружественной функции для всех производных класса A 
 (2) инициализация атрибута класса 
 (3) ошибка компиляции 
Упражнение 8:
Номер 1
Какой результат будет у следующего выражения?
class A
{ friend int Freund();
friend class B;
public : int x, y;
private: short i;
} A1;
class B
{ public : void func_B(); }B1;
int Freund()
{ A1.x = 1; A1.y = 2; A1.i += 3;
return A1.x + A1.y + A1.i;
}
void B::func_B()
{ A1.i = 2; }
int main()
{ B1.func_B(); cout << Freund(); }
Ответ:
 (1) 6 
 (2) 8 
 (3) 12 
Номер 2
На какой строке произойдет ошибка компиляции?
1:class A
2: { public: void f1(int &a){val+=a++;};//val инициализируется в конструкторе
3: int f2() {return val+1;};
4: int val;
5: } A1;
6:int main()
7: {
8: A1.f1();
9: A1.f2();
10: }
Ответ:
 (1) 3 
 (2) 5 
 (3) 8 
 (4) 9 
Номер 3
В какой строке будет ошибка компиляции?
1:class A
2: { public: void f1(int &a){val+=a++;};//val инициализируется в конструкторе
3: int const f2() {return val+1;};
4: int val;
5: void f3(int f, const char ch);
6: } A1;
7: void A::f3(int f, const char ch){
8: int d=5;
9: f1(*d);
10: f2();
11: }
Ответ:
 (1) 3 
 (2) 6 
 (3) 9