Главная / Программирование /
Язык программирования C++ для профессионалов / Тест 13
Язык программирования C++ для профессионалов - тест 13
Упражнение 1:
Номер 1
Что такое конкретный тип?
Ответ:
 (1) представляет встроенные типы данных 
 (2) то же, что абстрактный тип 
 (3) создается пользователем для представления простых понятий 
Номер 2
Перечислите свойства абстрактного типа?
Ответ:
 (1) нельзя создать объект этого типа  
 (2) реализуется некоторым конкретным типом 
 (3) любой базовый класс должен быть абстрактным 
 (4) обязательно объявляется с ключевым словом abstract
 
 (5) обычно не требует конструктора 
Номер 3
Приведите примеры конкретного типа:
Ответ:
 (1) списки  
 (2) целые числа 
 (3) строки 
 (4) символы 
Упражнение 2:
Номер 1
Что произойдет, если чисто виртуальный метод не определить в производном классе?
Ответ:
 (1) ошибка компиляции 
 (2) не удастся создать объект данного класса 
 (3) будет вызываться метод базового абстрактного класса 
 (4) зависит от реализации С++ 
Номер 2
Что представляет собой обширный интерфейс?
Ответ:
 (1) объединение объектов различных классов 
 (2) объединение базовых классов представляющих какое-либо понятие 
 (3) объединение интерфейсов классов, представляющих множество понятий 
Упражнение 3:
Номер 1
Что может представлять собой интерфейс?
Ответ:
 (1) абстрактный базовый класс  
 (2) класс обобщающий понятия, реализованные в других классах 
 (3) класс, связывающий программы на С++, с программами на других языках 
Номер 2
Что произойдет если вызвать delete
для несуществующего указателя?
Ответ:
 (1) компилятор выдаст ошибку 
 (2) сбой в системе распределения памяти 
 (3) операция будет проигнорирована компилятором 
Номер 3
Перечислите принципы управления памятью
Ответ:
 (1) вся память, выделенная в конструкторе, должна освобождаться в деструкторе  
 (2) глобальные операторы new
и delete
должны быть обязательно перегружены в классе 
 (3) область, передаваемая оператору new
должна быть достаточной для создания объекта 
Упражнение 4:
Номер 1
Что делает оператор new
?
Ответ:
 (1) проверяет, достаточно ли памяти для создания объекта 
 (2) выделяет пямять под объект 
 (3) освобождает память 
Номер 2
Когда освобождается память, выделенная для объекта?
Ответ:
 (1) когда вызывается оператор delete
 
 (2) когда объект больше не используется 
 (3) если реализован сборщик мусора 
Номер 3
Реализован ли в стандарте С++ "сборщик мусора"?
Ответ:
 (1) да 
 (2) нет 
Упражнение 5:
Номер 1
Можно ли перегружать операции new
и delete
?
Ответ:
 (1) можно 
 (2) можно только для отдельного класса 
 (3) можно только глобально 
 (4) нельзя 
Номер 2
Узловой класс:
Ответ:
 (1) пользуется сервисом, предоставляемым базовым классом 
 (2) предоставляет виртуальные функции и защищенный интерфейс для базовых классов 
 (3) не зависит от своих базовых классов 
Номер 3
К какому виду относится класс, объявленный так:
class dim
{ public: virtual void add(X*) = 0;
virtual void sub(X*) = 0;
virtual int sum() = 0;
virtual ~dim(){};
}
Ответ:
 (1) конкретный тип 
 (2) абстрактный тип 
 (3) узловой класс 
 (4) интерфейсный класс 
 (5) управляющий класс 
Упражнение 6:
Номер 1
Какая функция обеспечивает возможность использования имени в качестве уникального ключа объекта?
Ответ:
 (1) const char* name()const;
 
 (2) int has_base(const Type_info*, int direct=0) const;
 
 (3) int same(const Type_info* p) const;
 
 (4) int can_cast(const Type_info* p) const;
 
Номер 2
Какое определение наиболее точно соответствует понятию "каркас области приложения"?
Ответ:
 (1) класс, образующий дерево классов, предоставляемых программистом или библиотечных 
 (2) класс с обширным интерфейсом 
 (3) чисто прикладной класс 
Номер 3
Какую функцию можно использовать для определения, является ли заданный класс базовым для другого класса?
Ответ:
 (1) const char* name()const;
 
 (2) int has_base(const Type_info*, int direct=0) const;
 
 (3) int same(const Type_info* p) const;
 
 (4) int can_cast(const Type_info* p) const;
 
Упражнение 7:
Номер 1
Интерфейсный базовый класс - это:
Ответ:
 (1) класс, предназначенный для совместного использования полезных функций 
 (2) класс, использующий только функции-подстановки 
 (3) абстрактный базовый класс, который представляет абстрактный тип, реализуемый конкретными типами, предназначенный для адаптации интерфейса 
Номер 2
В каких случаях использование интерфейсных классов обеспечивает более эффективный интерфейс?
Ответ:
 (1) если при слиянии двух иерархий с помощью множественного наследования в каждом из них используются виртуальные функции с одним именем, производящие разные операции 
 (2) если нужно организовать интерфейс между программой на С++ и программой на другом языке 
 (3) если нужно приспособить к запросам пользователя интерфейсные функции, разбросанные по всей программе 
Номер 3
Каково назначение управляющих классов?
Ответ:
 (1) управляющий класс предназначен для управления атрибутами объекта 
 (2) управляющий класс предназначен для управления памятью, выделяемой объектам 
 (3) управляющий класс определяет интерфейс объекта и содержит ссылку на содержательную часть объекта 
Упражнение 8:
Номер 1
Что подразумевает термин "сборщик мусора"?
Ответ:
 (1) функция, осуществляющая управление памятью 
 (2) функция, предназначенная для уничтожения объектов 
 (3) часть системы, которая определяет, в какой момент объект может быть уничтожен, и уничтожает его 
Номер 2
Для чего предназначен сервер заявок?
Ответ:
 (1) для обслуживания заявок на уничтожение объектов 
 (2) для хранения адресов объектов и указателей на соответствующие им функции очистки памяти 
 (3) для удаления объектов, не удаленных с помощью явных операций 
Номер 3
Может ли быть освобождена память, выделенная объектам класса Х
с помощью класса Рool
?
Ответ:
 (1) может при вызове оператора delete
 
 (2) не может до окончания работы программы  
 (3) может, при уничтожении объекта Pool
 
Упражнение 9:
Номер 1
Какие ограничения накладывает использование абстрактных классов?
Ответ:
 (1) постоянная связь между интерфейсом, заданным абстрактным типом, и реализацией, представленной конкретным типом 
 (2) теряются преимущества виртуальных функций 
 (3) объект абстрактного класса всегда имеет один и тот же размер, а классы, отражающие реальные понятия, могут иметь память разных размеров 
 (4) невозможно разделить интерфейс класса и его реализацию 
Номер 2
Определены классы:
class window
{ virtual void move();
};
class figure
{ virtual void move();
};
class cwindow : public window
{ virtual int wmove(int) = 0;
void move() { wmove(); }
};
class cfigure
{ virtual int fmove(int) = 0;
void move() { fmove(); }
};
class wind_fig : public cwindow, public cfigure
{ void wmove();
void fmove();
};
К какому виду относится класс wind_fig
?
Ответ:
 (1) конкретный тип 
 (2) абстрактный тип 
 (3) узловой класс 
 (4) интерфейсный класс 
 (5) управляющий класс 
Номер 3
К какому виду относится класс, объявленный так:
class vector_handler
{ vector* p;
public: vector* operator->() { return p; }
vector_handler(vector* pp) : p(pp) { }
};
Ответ:
 (1) конкретный тип 
 (2) абстрактный тип 
 (3) узловой класс 
 (4) интерфейсный класс 
 (5) управляющий класс 
Упражнение 10:
Номер 1
Что такое библиотека?
Ответ:
 (1) предоставляет решение конкретной задачи для конкретной области приложения 
 (2) предоставляет решение для множества задач 
 (3) может использоваться в разнообразных окружениях 
Номер 2
Какая из функций является чисто виртуальной?
Ответ:
 (1) virtual void f();
 
 (2) virtual void f(int x)=0;
 
 (3) virtual void f(){};
 
Номер 3
Может ли виртуальная функция быть встроенной?
Ответ:
 (1) может 
 (2) не может 
 (3) может, только если ее объявить как inline
 
Упражнение 11:
Номер 2
Может ли деструктор быть виртуальным?
Ответ:
 (1) может 
 (2) не может 
Номер 3
Может ли статическая функция-член быть виртуальной?
Ответ:
 (1) может 
 (2) не может 
Упражнение 12:
Номер 1
В каком случае подкласс абстрактного класса сам не является абстрактным?
Ответ:
 (1) когда в нем переопределена хотя бы одна чисто виртуальная функция 
 (2) когда в нем переопределены все чисто виртуальные функции 
 (3) подкласс абстрактного класса никогда не может быть абстрактным 
Номер 2
Выберите верные утверждения для операторов new
и delete
, перегруженных в базовом классе:
Ответ:
 (1) они будут унаследованы в производных классах 
 (2) они не могут быть переопределены в производных классах 
 (3) в одном классе можно определить по несколько этих операторов с разным описанием 
Номер 3
Можно ли определить оператор new
, принимающим несколько параметров?
Ответ:
 (1) нельзя 
 (2) можно