Запитання вартістю 3 бали ( найвища складність 78 пит.)
Виклик методу об’єкту можливий через
Вказівник на метод класу
Вказівник на метод об’єкту
Вказівник на глобальну функцію.
Що резервує пам'ять – оголошення чи визначення?
Пам’ять резервується визначенням змінних і класів.
Пам’ять резервується оголошення змінних, а оголошення класів пам’ять не резервує.
Пам’ять резервується оголошенням змінних і класів.
Інтерфейсом класу є?
Набір захищених членів класу.
Усі не приватні члени класу.
Набір відкритих членів класу.
В чому різниця між відкритими (public) і закритими (private) членами-даних?
До відкритих членів класу доступ мають усі користувачі даного класу, а до закритих – тільки сам клас та дружні функції (чи дружні класи).
До відкритих членів класу доступ мають усі користувачі даного класу, а до закритих – тільки сам клас та похідні класи.
До відкритих членів класу доступ мають тільки сам клас і похідні класи, а до закритих – тільки сам клас та дружні функції (чи дружні класи).
Як ініціалізуються змінні, які є приватними статичними членами класу??
Через похідні класи
Статична змінна ініціалізується автоматично
Статичні члени можуть бути виключно відкритими, а тому ініціаліалізувати закритий неможливо.
Через вкладені класи.
Посилання на новий об'єкт повертає?
Конструктор по замовчуванні
Оператор присвоєння.
Оператор new
Чи мають якісь привілегії вкладені класи по відношенню до зовнішніх?
Так.
Ні.
Мають доступ тільки до відкритих членів зовнішнього класу.
Чи мають якісь привілегії зовнішні класи по відношенню до вкладених в них класів?
Так.
Ні.
Мають доступ тільки до відкритих і захищених членів вкладеного класу.
Якщо оголосити два об’єкти класу Cat, то чи можуть вони мати різні значення звичайного члена данихint itsAge?
Так.
Ні.
Так, за умови спеціальних оголошень.
Чи потрібно оголошення класу закінчувати крапкою з комою? А визначення методів класу?
Оголошення методів завжди завершується крапкою з комою, а оголошення класів – ні.
Оголошення класу завжди завершується крапкою з комою, а визначення методів – ні.
Оголошення методів і визначення класів завжди завершується крапкою з комою.
Як виглядав би заголовок члена-функції MeowкласуCat, яка немає ніяких параметрів і повертає значенняvoid?
Cat::Meow(void);
void Meow(void);
void Cat::Meow();
Яка функція викликається для ініціалізації класу?
Конструктор.
Деструктор.
Віртуальний метод.
Статичний метод.
Чим відрізняються глобальні статичні функції від статичних функцій-методів класу?
Оператором доступу.
Областю дії
Областю видимості.
Нічим не відрізняються.
Чи може шаблоний клас бути абстрактним??
Ні.
Так.
Так, але за додаткових умов.
Чим відрізняється оператор непрямого доступу (*) від оператора звертання за адресою (&)?
Оператор непрямого доступу (*) повертає значення за адресою, а оператор звертання за адресою (&) – адресу змінної.
Оператор непрямого доступу (*) повертає адресу змінної, а оператор звертання за адресою (&) – значення за адресою.
Між ними немає відмінностей.
Що створено наступним оголошенням const int * ptrOne?
Константний вказівник.
Постійний вказівник на константу.
Вказівник на константу.
Що створено наступним оголошенням int * const ptrTwo?
Вказівник на константу.
Константний вказівник.
Постійний вказівник на константу.
Який оператор спричинює виклик деструкторів об’єктів, які є елементами масиву?
delete.
delete [].
Обоє наведені оператори викличуть деструктори.
Що таке постійне посилання?
Скорочений варіант визначення постійного вказівника на довільну змінну.
Такого поняття не існує.
Скорочений варіант визначення посилання на постійний об’єкт.
Чим відрізняються версії перевантажених функцій?
Типом і кількістю параметрів.
Типом значень, які повертаються функціями.
Типом і кількістю параметрів та типом значень, які повертаються функціями.
Коли викликається конструктор копії?
Завжди, коли створюється тимчасова копія об’єкту.
Завжди, коли створюється об’єкт як копія існуючого.
В обох наведених випадках.
Коли викликається деструктор?
При виклику оператора delete.
В обох наведених випадках.
При знищенні локального об’єкта.
У випадку передавання об’єкта у тіло функції за значенням буде викликатись?
Конструктор копії.
Оператор присвоєння.
Оператор порівняння.
Що являє собою вказівник this?
Адресу класу.
Адресу об’єкта.
Адресу члена класу.
Адреса члена об’єкту.
Чим відрізняється перевантаження префіксних і постпрефіксних операторів інкременту?
Логічним прапорцем bool.
Перевантаження префіксних і постпрефіксних операторів в класах не підтримується.
Логічним прапорцем int.
Чи можна перевантажити operator+ для змінних типу short int ?
Так.
Ні.
Чи можна в мові C++ перевантажити operator++ так, щоб він виконував операцію декременту (зменшення)?
Так.
Ні.
Який тип повинна повернути функція оператора приведення типів?
Посилання на клас, в якому перевантажується оператор приведення.
Тип, стосовно якого здійснюється приведення.
Оператор приведення типу не повертає значень.
Для чого потрібна попередня декларація класу?
Для попереднього створення копій класу;
Для попереднього створення посилань на копії класу;
Для організації функцій із параметром, який є посиланням на об'єкт класу
Для організації функцій із параметром, який є копією класу.
Чи можна викликати функцію, якщо відома конкретна фізична адреса?
Так
Ні.
Що таке інкапсуляція?
Об’єднання віртуальних методів класу в один закритий блок.
Об’єднання даних і функцій класу в один закритий блок.
Об’єднання статичних членів усіх класів ієрархії наслідування в один закритий блок.
Чи можуть конструктор та деструктор оголошуватись віртуальними?
Конструктор - ні, деструктор – так.
Конструктор - так, деструктор – ні.
Конструктор - так, деструктор – так.
Конструктор - ні, деструктор – ні.
Як виглядає оголошення віртуального конструктора класу A?
virtual A::A(){}.
Оголошувати конструктор віртуальним заборонено.
virtual A::~A(){}.
Як викликати наслідувану функцію базового класу через об’єкт похідного класу, якщо в похідному класі ця функція не була переозначена?
Тільки через посилання на батьківський клас.
Тільки через вказівник на метод батьківського класу.
Як звичайний метод.
Як викликати функцію базового класу через об’єкт похідного класу, якщо в похідному класі ця функція була переозначена?
Як звичайний метод.
За допомогою оператора дозволу дії (::).
Переозначений в похідному класі метод батьківського класу викликати заборонено.
Якщо в базовому класі функція оголошена віртуальною, а в похідному класі ключове слово virtual при переозначені цього класу не використано, то чи буде ця функція віртуальною при успадковуванні її класом третього рівня?
Так.
Ні.
Для яких користувачів доступні члени класи, які оголошені в секції protected?
Для класу, похідного класу та для дружніх класів чи дружніх функцій.
Для екземплярів класу, похідного класу та для дружніх класів чи дружніх функцій.
Для класу, дружніх функцій та для екземплярів сторонніх класів.
Що таке приведення типу об’єкта вниз?
Вказівник на похідний клас приводиться до типу вказівника на батьківський клас.
Вказівник на клас однієї ієрархії приводиться до типу вказівника на довільний клас іншої ієрархії.
Вказівник на батьківський клас приводиться до типу вказівника на похідний клас.
Що таке v-ptr?
Зміщення в таблиці віртуальних функцій.
Вказівник на таблицю віртуальних функцій.
Вказівник на адресу об’єкта.
Нехай, для створення прямокутника із заокругленими кутами використовується клас RoundRect, який є похідним від двох базових класів – Rectangle і Circle, які, в свою чергу, походять від спільного класу Shape. Скільки об’єктів класу Shape створюється при створенні одного об’єкта класу RoundRect?
Одна копія класу Shape.
Дві копії класу Shape.
Три копії класу Shape.
Чотири копії класу Shape.
Нехай, для створення прямокутника із заокругленими кутами використовується клас RoundRect, який є похідним від двох базових класів – Rectangle і Circle, які, в свою чергу, віртуально походять від спільного класу Shape. Скільки об’єктів класу Shape створюється при створенні одного об’єкта класу RoundRect?
Одна копія класу Shape.
Дві копії класу Shape.
Три копії класу Shape.
Чотири копії класу Shape.
Якщо класи Horse (кінь) і Bird (птах) віртуально унаслідуються від класу Animal як відкриті, то чи будуть конструктори цих класів ініціалізовувати конструктор класу Animal?
Ініціалізація конструктора батьківського класу повністю допускається.
Правила мови забороняють управління конструктором віртуально наслідуваного класу.
Керування конструктором батьківського класу ігнорується.
Оголосіть клас Vehicle (транспортний засіб) як абстрактний тип даних.
class Vehicle
{
virtual void Move()=0;
};
class Vehicle
{
void Move() {};
};
class Vehicle
{
abstract void Move() {};
};
Якщо базовий клас оголошений як абстрактний і містить три чисто віртуальні функції, то скільки з них достатньо переозначити в його не абстрактних похідних класах?
Усі три.
Жодної не потрібно.
Принаймні одну.
Якщо базовий клас оголошений як абстрактний і містить три чисто віртуальні функції, то скільки з них треба переозначувати в його похідних класах?
Необхідно переозначувати усі три.
Можна жодної не переозначувати.
Принаймні одну.
Чи можуть статичні змінні-члени бути закритими?
Так.
Ні.
Тільки статичні члени даних.
Що таке дружня функція?
Функція, яка має доступ до захищених і відкритих членів класу.
Функція, яка має доступ до статичних членів класу.
Функція, яка має доступ до усіх членів класу.
Який клас вважається дружнім?
Клас, який має доступ до захищених і відкритих членів класу.
Клас, який має доступ до усіх членів іншого класу.
Клас не може оголошуватись дружнім.
Якщо клас Dog оголошений як дружній класу Boy, то чи буде Boy дружній до Dog?
Так.
Ні.
Якщо клас Dog оголошений як дружній класу Boy, Terrier походить від Dog, то чи буде Terrier дружній до Boy?
Так.
Ні.
Якщо клас Dog оголошений як дружній класу Boy, а Boy дружній до Horse, то чи буде клас Dog дружній до Horse?
Так.
Ні.
Де потрібно розміщувати оголошення дружньої функції?
За межами тіла класу.
При оголошенні прототипу функції.
В тілі класу.
Чим cin.read() відрізняється від cin.getline()?
Функція cin.read() призначена для читання структур бінарних даних, а функція cin.getline() – для читання з буфера istream.
Функція cin.getline()призначена для читання структур бінарних даних, а функція – cin.read()для читання з буфера istream.
Функція cin.getline()для читання з буфера ostream, а функція – cin.read()для читання з буфера istream.
Яке значення повертає оператор витягування з потоку (>>)?
Посилання на об’єкт класу ios.
Посилання на об’єкт класу iostream.
Посилання на об’єкт класу іstream.
Посилання на об’єкт класу ofstream.
Яке значення повертає оператор вставки в потік (<<)?
Посилання на об’єкт класу ios.
Посилання на об’єкт класу iostream.
Посилання на об’єкт класу ifstream.
Посилання на об’єкт класу оstream.
Який параметр приймає конструктор об’єкту ofstream?
Ім’я файлу, який відкривається.
Ім’я нового потоку виводу.
Ім’я пристрою виводу.
Що робить прапорець ios::ate?
Встановлю режим читання в “бінарний”.
Відкриває файл в режимі “читання”.
Вставляє точку вводу в кінець файлу.
Чи можна використовувати імена, які оголошенні в просторі імен без ключового слова using?
Можна без жодних застережень.
Не можна.
Можна за умови використання додаткових специфікаторів.
Де доступні змінні неіменованого (анонімного) простору імен?
Тільки в межах блоку трансляції.
Тільки в межах простору.
Абсолютно недоступні.
Що таке стандартний простір імен std?
Глобальний простір, стосовно якого усі простори імен є вкладеними.
Простір, в якому оголошено ідентифікатори бібліотеки С++.
Простір виключно потокової бібліотеки вводу/виводу.
В чому різниця між шаблоном функції і макросом?
Шаблони здійснюють перевірку типів.
Макроси здійснюють перевірку типів.
Між ними не існує жодної різниці.
В чому різниця між параметром в шаблоні функції і параметром у функції?
Між ними не існує різниці, обидва використовуються виключно для передавання даних в тіло функції при її виклику.
Параметр шаблону функції використовується для визначення типу екземпляру шаблону, а параметри функції – для передавання даних в область стеку.
Параметри функції можуть мати аргументи по замовчуванні, а параметри шаблону функції – ні.
Чи можна шаблон функції перевантажувати звичайною функцією?
Так
Ні.
Функції-члену класу завжди доступні дані?
класу, членом якого він є;
будь-якого об'єкта класу, членом якого він є;
класу, оголошеного відкритим.
Чи може параметр шаблону функції приймати значення по замовчуванні?
Так , у будь-якому випадку.
Так, лише як метод шаблону.
Ні , в жодному випадку
Що може бути аргументом по замовчуванні для параметра шаблону функції?
Тільки тип.
Тільки літеральне значення.
Шаблон функції не може приймати аргумент по замовчуванні.
Тип або літеральне значення.
Чи можна зробити поведінку одного екземпляра шаблона відмінним від інших?
Так.
Ні.
Оголошувати статичні члени в шаблонах класу заборонено.
Що таке виключення?
Об’єкт, який створюється за допомогою оператора new.
Об’єкт, який створюється за допомогою оператора throw.
Об’єкт, який створюється за допомогою оператора dynamic_cast.
Що являє собою блок try?
Блок операторів, в якому обробляються виключення.
Блок операторів, в якому можливі виникнення виключення.
Блок операторів, в якому перехоплюються виключення.
Яку інформацію може містити виключення?
Виключення – це змінна виключно типу int, яка уособлює номер помилки.
Виключення – це змінна виключно рядкового типу (сhar*), яка уособлює опис помилки.
Виключення – це об’єкт, який може містити будь-яку інформацію.
Коли створюється об’єкт виключення?
Об’єкт виключення створюється при виклику оператора new.
Об’єкт виключення створюється при виклику оператора static_cast.
Об’єкт виключення створюється при виклику оператора throw.
Як можна передавати виключення?
За значенням, за вказівником або як посилання.
Виключно як посилання.
Виключно за значенням, або як посилання.
Чи буде оператор catch обробляти виключення похідного класу, якщо він очікує виключення базового?
Так.
Так, виключно за умови явного приведення об’єкту похідного класу до типу базового класу.
Ні, оскільки не працює механізм автоматичного приведення.
Ні.
Якщо використовуються два оператори catch: один – для базового, а другий – для похідних типів виключення, який із них потрібно розмістити першим?
Першим треба розміщати оператор catch стосовно похідного класу.
Першим треба розміщати оператор catch стосовно базового класу.
Це не має значення.
Що робить оператор catch(…)?
Поширює будь-яке виключення на зовнішні обробники.
Перехоплює виключення будь-якого типу.
Забороняє генерувати нове виключення при обробці попереднього.
Продовжіть речення
Статичний метод класу
як метод класу, автоматично отримує вказівник this.
не може викликатись без створення хоча б одного екземпляру класу.
є спільний для усіх об’єктів класу.
Чи можна перевантажувати статичні методи класу?
Так.
Ні.
Тільки у випадку, коли в класі усі члени є загальнодоступними.
Чи можна переозначувати статичні методи в похідних класах?
Так.
Ні.
Тільки у випадку, коли в батьківському класі статичні методи є захищеними.
Чи можна статичний метод оголосити віртуальним?
Так.
Ні.
Тільки у випадку, коли в батьківському класі статичні методи є відкритими або захищеними.
Чи правильним є таке твердження: клас може мати більше одного конструктора з одним і тим самим іменем?
ні, бо конструктор може мати тільки одне ім'я – ім'я класу;
так, бо поряд зі звичайним конструктором можуть бути декілька параметризованих;
ні, бо кожен конструктор повинен мати різні імена;
так, бо будь-який конструктор може мати тільки одне ім'я – ім'я класу
Функції-члену класу завжди доступні дані:
об'єкта, членом якого він є;
класу, членом якого він є;
будь-якого об'єкта класу, членом якого він є;
класу, оголошеного відкритим.
Єдиною формальною відмінністю між структурами і класами у мові C++ є те, що:
функції-члени класу за замовчуванням у класі є відкритими, але закритими у структурах;
члени даних класу за замовчуванням у класі є закритими, але відкритими у структурах;
члени даних класу і функції-члени класу за замовчуванням у класі є відкритими, але за-критими у структурах;
члени даних класу і функції-члени класу за замовчуванням у класі є закритими, але відк-ритими у структурах..
Припускаючи, що функція-член класу getcrow()визначена поза класом, як оголосити її усередині класу?
|
а) |
б) |
в) |
г) |
|
class leverage { private: void pry(); int getcrow(); public: int crowbar; leverage() {crowbar = 0;} }; int leverage::getcrow() {return crowbar;} |
class leverage { private: int crowbar; public: void pry(); int getcrow()=0; leverage() {crowbar = 0;} }; int leverage::getcrow() {return crowbar;} |
class leverage { private: int getcrow(); leverage() {crowbar = 0;} public: int crowbar; void pry(); }; leverage int::getcrow() {return crowbar;} |
class leverage { private: crowbar int; public: pry void (); int getcrow ; leverage() {crowbar = 0;} }; int::leverage getcrow() {return crowbar;} |
a.
б
в
г
Перевантаження операцій
надає операціям мови C++ більше, ніж вони можуть обробити;
перетворює операції (operator) мови C++ для роботи з об'єктами;
дає змогу повторювати наявні у мові C++ операції;
створює нові операції мови C++.
Чи правильним є таке твердження: операція >= може бути перевантажена?
так, бо вона належить до таких, які можна перевантажувати;
ні, бо вона не належить до таких, які можна перевантажувати;
так, бо перевантажувати можна будь-які операції;
ні, бо перевантажувати можна тільки такі операції: +, -, *, /.
11. Яке з записаних повних визначень для перевантаженої операції в класі CounterпрограмиCountpp1, яка замість збільшення лічильника, зменшує його:
|
а) |
б) |
в) |
г) |
|
class Counter { private: int cout; public: void operator--() { cout--;} }; |
class Counter { public: int cout; private: void operator--() { cout--;} }; |
class Counter { private: int cout; public: void operator--(); }; void Counter::operator--() { cout--;} |
class Counter { private: int cout; public: void operator--() { cout--;} }; |
a
б
в
г
Скільки аргументів потрібно для визначення перевантаженої унарної операції?
хоча б один;
зовсім не потрібно;
два аргументи;
як аргумент передається покажчик на об'єкт.
Єдиною формальною відмінністю між структурами і класами у мові C++ є те, що:
функції-члени класу за замовчуванням у класі є відкритими, але закритими у структурах;
члени даних класу за замовчуванням у класі є закритими, але відкритими у структурах;
члени даних класу і функції-члени класу за замовчуванням у класі є відкритими, але за-критими у структурах;
члени даних класу і функції-члени класу за замовчуванням у класі є закритими, але відкритими у структурах.
Чи правильним є таке твердження: перевантажена операція завжди вимагає на один аргумент менше, ніж кількість операндів?
ні, якщо операнди є об'єктами різних класів;
так, якщо операнди є об'єктами одного класу;
ні, бо одним з операндів може бути змінна стандартного типу;
так, бо операндами є змінні стандартного типу.
Коли перевантажуєтьсяоперація арифметичного присвоєння, то результат:
передається об'єкту праворуч від операції;
передається об'єкту, який розташований зліва від поточної операції;
передається об'єкту, що викликав операцію;
повинен бути повернений іншій функції.
Нехай визначено три об'єкти не віртуального класу. Скільки копій функцій-членів класу міститься у пам'яті?
одна;
дві
три
жодної
Константна функція-член класу, викликана для об'єкта класу:
може змінювати як неконстантні, так і константні члени даних класу;
може змінювати тільки неконстантні члени даних класу;
може змінювати тільки константні члени даних класу;
не може змінювати як неконстантні, так і константні члени даних класу.
Чи правильним є таке твердження: об'єкт, оголошений як константний, можна викори-стовувати тільки за допомогою константних функцій-членів класу?
ні, його можна використовувати за допомогою будь-яких функцій;
так, його можна використовувати тільки за допомогою константних функцій;
ні, його можна використовувати тільки за допомогою неконстантних функцій;
так, його можна використовувати за допомогою функцій-"друзів" класу;
Посилання повідомлення об'єкту еквівалентне
ініціалізації об'єкта;
його знищенню;
виклику однієї з його функцій;
виклику конструктора класу.
Операція крапки (операція доступу до члена класу) об'єднує такі два елементи (зліва направо?
член класу і об'єкт класу;
об'єкт класу і клас;
клас і член цього класу;
об'єкт класу і член цього класу;
Для перетворення від визначеного користувачем класу до основного типу можна використовувати
вбудовану операцію приведення;
конструктор з одним аргументом;
перевантажену операцію =;
операцію приведення, яка є членом класу..
Чи правильним є таке твердження: вираз objA = objBбуде причиною помилки компілятора, якщо об'єкти різних типів?
так у випадку, якщо є конструктор, інакше – ні;
ні у випадку, якщо є програма перетворення, інакше – так;
ні у випадку, якщо є перевантажений оператор присвоєння, інакше – так;
так у випадку, якщо є перевантажений оператор присвоєння, інакше – ні.
Для перетворення від основного типу до визначеного користувачем можнавикористовувати:
вбудовану операцію приведення;
конструктор з одним аргументом;
перевантажену операцію =;
операцію приведення, яка є членом класу.
Чи правильним є таке твердження: якщо визначається конструктор, який містить визначення типу aclassobj = intVar;, то можна також записати вираз типуobj = intVar;?
ні, можна використовувати тільки вбудовану операцію перетворення;
ні, можна використовувати операцію перетворення, яка є членом класу.
ні, вираз присвоєння використовувати не можна;
так, можна використовувати вираз присвоєння
Якщо об'єкт objA належить класу А, а об'єкт objB належить класу В, а Ви хочете записати objA = objB і помістити функцію перетворення в клас А, то який тип процедури перетворення Ви можете використовувати?
конструктор;
конструктор копії;
вбудовану операцію перетворення;
операцію перетворення, яка є членом класу.
