Главная / Программирование /
Введение в программирование / Тест 11
Введение в программирование - тест 11
Упражнение 1:
Номер 1
В каких местах кода можно использовать ключевое слово this
для ссылки на объект данного класса?
Ответ:
 (1) в методе - члене класса 
 (2) в статическом методе 
 (3) в любом месте кода 
Номер 2
Компилятор среды Visual Studio.NET позволяет для языка С++ иметь методы - члены класса:
Ответ:
 (1) только с фиксированным числом параметров 
 (2) с переменным числом параметров, включая отсутствие параметров 
 (3) с переменным числом параметров, но при обязательном описании одного формального параметра 
Номер 3
Какие из следующих способов, использующие вызов по указателю на метод - член класса, определенный как int (a1::*Fx_p)(int)=&a1::Fx1;
a1* a1Obj = new a1(); верны для языка С++?
Ответ:
 (1)
i=(a1::Fx_p)(123);
 
 (2)
i=(a1Obj->*Fx_p)("str1");
 
 (3)
i=(a1Obj->*Fx_p)(123);
 
Упражнение 2:
Номер 1
Компилятор Visual C++ требует, чтобы:
Ответ:
 (1) любая функция имела прототип 
 (2) только функция член класса имела прототип 
 (3) только статическая функция имела прототип 
Номер 2
Отметьте правильный фрагмент кода, возвращающий как результат выполнения метода F3
члена класса CB
вызов метода F2
члена класса CA
:
Ответ:
 (1)
int CB::F3(void){ return CA::F2; }
 
 (2)
int CB::F3(void){ return CA::F2(); }
 
 (3)
int CB::F3(void){ return CA->F2(); }
 
Номер 3
Компилятор код вызова встроенной функции:
Ответ:
 (1) оставляет без изменения 
 (2) заменяет на код самой встроенной функции 
 (3) заменяет ссылкой на встроенную функцию 
Упражнение 3:
Номер 1
Какие из следующих способов, использующие вызов по указателю на метод - член класса, определенный как int (a1::*Fz_p)(int)=&a1::Fz1;
a1* a1Obj = new a1(); будут успешно откомпилированы (возможно, с сообщением warning
) для языка С++?
Ответ:
 (1)
i=(a1::*Fz_p)(77);
 
 (2)
i=(a1Obj->*Fz_p)(10.5);
 
 (3)
i=(a1Obj->*Fz_p)(-4);
 
Номер 2
В языке С++ дружественность классов:
Ответ:
 (1) наследуется 
 (2) не наследуется 
 (3) является транзитивной 
Номер 3
Каким классам, определенным следующим образом class A { int Fx(); }
class B { friend class A; }
class C { friend class B; } класс A
является дружественным?
Ответ:
 (1) классу В
 
 (2) классу С
 
 (3) классам С
и B
 
Упражнение 4:
Номер 1
Компилятор среды Visual Studio.NET позволяет для языка С++ иметь методы члены класса:
Ответ:
 (1) только с фиксированным числом параметров 
 (2) с переменным числом параметров, включая отсутствие параметров 
 (3) с переменным числом параметров, но при обязательном описании одного формального параметра 
Номер 2
Какие из следующих способов, использующие вызов по указателю на функцию, определенный как int (*Fy_pointer)()=&Fy;
верны для языка С++?
Ответ:
 (1)
std::cout<<(Fy_pointer)();
 
 (2)
std::cout<<(*Fy_pointer)();
 
 (3)
std::cout>>Fy_pointer();
 
 (4)
std::cout<<*Fy_pointer();
 
Номер 3
Каким классам, определенным в языке С++ следующим образом class A { int Fx(); }
class B { friend class A; }
class C : public B { } класс A
является дружественным?
Ответ:
 (1) классу С
 
 (2) классу В
 
 (3) классам С
и B
 
Упражнение 5:
Номер 1
Какие из следующих способов, использующие вызов по указателю на метод - член класса, определенный как int (a1::*Fx_pointer)(int)=&a1::Fx2;
a1* a1Object = new a1(); верны для языка С++?
Ответ:
 (1)
i=(a1Object->*Fx_pointer)(1);
 
 (2)
i=(a1::*Fx_pointer)(1);
 
 (3)
i=(a1Object->Fx_pointer)(1);
 
Номер 2
Из каких методов классов A
и В
, определенных следующим образом class A { private:
int Fx();
int Fy();
}
class B { public:
friend int A::Fx();
int Fz();
private:
int j;
} разрешен доступ к переменной j
класса B
для языка С++?
Ответ:
 (1) Fx
 
 (2) Fy
 
 (3) Fz
 
Номер 3
В каком случае разрешена перегрузка функций в языке С++?
Ответ:
 (1) функции различаются только типом и имеют совпадающие списки параметров 
 (2) функции различаются только типом и имеют различные списки параметров 
 (3) функции различаются типом и имеют различные списки параметров