Тест с ответами на тему: Объектно- ориентированное программирование



136. С помощью чего реализуется принцип полиморфизма в С ++?

A. наличия множественного наследования.

B. наличия виртуальных методов. +

C. Использование виртуального наследования.

D. наличия абстрактных классов.

137. В программе описано класс и объект class A {public: int a, b, c; }; A * obj; Как обратиться к атрибуту c?

A. obj.c

B. obj-> с +

C. obj A -> -> с

D. obj-> A.с

138. Какая из перечисленных функций не может быть конструктором?

A. void String () +

B. String ();

C. String (String & s)

D. String (const int a)

139. Отметьте правильное утверждение для абстрактного класса для языка С ++.

A. Класс, у которого все методы чисто виртуальные, называется абстрактным.

B. Абстрактный базовый класс навязывает определенный интерфейс всем производным из него классам.

C. Невозможно создать объект абстрактного класса. +

D. В абстрактном классе не описываются методы вообще.



140. Если в программе на языке С ++ в производном классе переопределена операция new то …

A. все объекты этого класса и все объекты классов, выведенных из него, будут использовать эту операцию независимо от зоне видимости, в которой она переопределена.

B. производные от этого класса могут использовать глобальную операцию применив операцию базовий_класс :: new. +

C. операцию new нельзя переопределить.

D. в любом случае эта операция будет доступна только в пределах класса-потомка.

141. Какой из перечисленных методов может быть конструктором для класса String в языке С ++?

A. String * String ();

B. void String ();

C. String (String & s); +

D. const String (int a);

142. Какая функция, не будучи компонентом класса, имеет доступ к его защищенным и внутренних компонентов?

A. Шаблонная.

B. Полиморфная.

C. Дружеская. +

D. Статическая.

143. Вызовет данный код ошибку компиляции? class Rectangle public: int a, b; int sum (); int square (); ~ Rect (); };

A. Ошибки нет, все записано верно.

B. Ошибка являются: имя деструктора должно совпадать с именем класса. +

C. Ошибка являются: имя деструктора не может начинаться с маленькой буквы.

D. Ошибка являются: никакой идентификатор в С ++ не может начинаться со знака «~».

144. Укажите правильное объявление виртуального метода, который принимает одно целочисленное значение и возвращаетvoid.

A. virtual void SomeFunction (int х); +

B. void SomeFunction (int х) virtual;

C. virtual SomeFunction (int х);

D. virtual void SomeFunction (int * x);

145. Укажите правильное использование оператора friend.

A. class A {int_friend CountPass (); private: short i;};

B. class A {public: friend int Н :: CountPass (); private: short i;}; +

C. class A {public: int A1 :: CountPass (); friend: short i;};

D. class A {public: friend int Н :: q; short i;};

146. Принцип объектно-ориентированного программирования, заключается в объединении атрибутов и методов объекта с целью обеспечения сохранности данных, называется:

A. Наследование.

B. Сочетание.

C. Инициализация.

D. Инкапсуляция. +

147. В программе описано абстрактный класс А и производный от этого класса класс А1. Какой из записей заведомо неверный?

A. A * a = new A; +

B. A1 a1;

C. A1 a1; A & a = a1;

D. A1 a1; A1 a2;

148. Выберите верное утверждение о деструктор класса в С ++.

A. Деструктор принимает в качестве параметра адрес того объекта, который нужно уничтожить.

B. Деструктор принимает в качестве параметра указатель this.

C. Деструктор не содержит параметров. +

D. Деструктор принимает в качестве параметра тот объект, который нужно уничтожить.

149. Укажите правильный вариант доступа к членам объектов (язык С ++), описанных следующим образом: class my {char s;public: double Z; int f (int c, int d) {return c + d;}; } T1, T2;

A. T1.Z = 23.1; +

B. T2-> f (2,1);

C. T1.s = ‘#’;

D. my.T2-> s = ‘L‘;

150. Какой из вариантов записи абстрактного класса в С ++ является правильным?

A. abstract class A {virtual int f () = 0;};

B. class A {virtual int f () = 0;}; +

C. class A {virtual int f () = 0;} abstract;

D. class A {virtual int f ();};