- •Запитання з дисципліни "Об'єктно-орієнтоване програмування"
- •1.1. Як ініціалізуються змінні, які є приватними статичними членами класу?
- •1.1. Що поганого в автоматичному приведенні типів об’єктів?
- •1.1. В чому різниця між шаблоном функції і макросом?
- •1.1. Для чого використовувати шаблони, якщо можна використовувати макроси?
- •2.1. Припускаючи, що функція-член класу getcrow() визначена поза класом, як оголосити її усередині класу?
- •2.1. Скільки помилок знайде компілятор в цьому коді? Поясніть, які саме.
- •2.1. Знайдіть помилку в реалізації оператора присвоєння, та поясніть її:
- •Рівень 3
- •Запитання з дисципліни "комп'ютерні мережі"
- •Рівень 3
- •Запитання з дисципліни "чисельні методи"
- •Рівень 3
2.1. Припускаючи, що функція-член класу 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;} |
classleverage
{
private:
crowbar int;
private:
intgetcrow();
leverage()
{crowbar =0;}
public:
intcrowbar;
voidpry();
};
leverage int::getcrow()
{returncrowbar;}
2.1. Шаблони класів і функцій. Cпеціалізації ШK.
2.1. Шаблони функцій.
2.1. В якому рядку чи рядках компілятор знайде помилки? Поясніть чому?
a) class TV
b) {
c) public:
d) void SetStation(int Station);
e) int GetStation() const;
f) private:
g) int itsStation;
h) };
i) main()
j) {
k) TV myTV;
l) myTV.itsStation = 9;
m) TV.SetStation(10);
n) TV myOtherTv(2);
o) }
2.1. Скільки помилок знайде компілятор в цьому коді? Поясніть, які саме.
class TV
{
public:
void SetStation(int Station);
int GetStation() const;
private:
int itsStation;
};
main()
{
TV myTV;
myTV.itsStation = 9;
TV.SetStation(10);
TV myOtherTv(2);
}
2.1. Знайдіть помилку в реалізації оператора присвоєння, та поясніть її:
class SQUARE
{
int* itsSide;
public:
SQUARE operator =(const SQUARE& rhs)
{
itsSide = new int;
*itsSide = rhs.GetSide();
return this;
}
GetSide(){return *itsSide;}
};
2.1. В якому рядку (чи рядках) зроблена помилка? Поясніть її :
class Shape()
{
public:
Shape();
virtual ~Shape();
virtual Shape( const Shape& );
};
2.1. В якому рядку (чи рядках) зроблена помилка? Поясніть її:
class Shape { };
class Rectangle: public Shape { };
void SomeFunction (Rectangle) { }
int main()
{
Rectangle * pRect = new Shape;
SomeFunction (*pRect);
}
2.1.В якому рядку чи рядках компілятор знайде помилки? Поясніть чому?
a) class TV
b) {
c) public:
d) void SetStation(int Station);
e) int GetStation() const;
f) private:
g) int itsStation;
h) };
i) main()
j) {
k) TV myTV;
l) myTV.itsStation = 9;
m) TV.SetStation(10);
n) TV myOtherTv(2);
o) }
2.1.В якому рядку (чи рядках) зроблена помилка, поясніть чому:
class Shape { };
class Rectangle: public Shape { };
void SomeFunction (Rectangle) { }
int main()
{
Rectangle * pRect = new Shape;
SomeFunction (*pRect);
}
2.1.Який з вибраних варіантів ілюструє оголошення класу A та інтерфейсу В, при якому неможливим є наслідування А в подальшому?
|
|
|
|
class A { friend class CFinal; private: A() {} }; //sample class class CFinal: private virtual A { };
class A { public: A() =0 ; }; // sample class class CFinal : private virtual A { B(){} }; |
protected class A { public: A() {} };
// sample class class CFinal : A { }; |
class A { public: A() =0 ; };
// sample class class CFinal : A { B(){} }; |
class A { A(); public: };
// sample class class CFinal : private virtual A { B(){} }; |
2.1.Знайдіть помилку в реалізації оператора присвоєння, та поясніть їх.
class SQUARE
{
int* itsSide;
public:
SQUARE operator =(const SQUARE& rhs)
{
itsSide = new int;
*itsSide = rhs.GetSide();
return this;
}
GetSide(){return *itsSide;}
};
2.1. Який з вибраних варіантів ілюструє оголошення класу A та інтерфейсу В, при якому неможливим є наслідування А в подальшому?Поясніть чому?
а) |
б) |
в) |
г) |
class A { friend class CFinal; private: A() {} }; //sample class class CFinal: private virtual A { }; |
protected class A { public: A() {} };
// sample class class CFinal : A { }; |
class A { public: A() =0 ; };
// sample class class CFinal : A { B(){} }; |
class A { A(); public: };
// sample class class CFinal : private virtual A { B(){} }; |
2.1.Опишіть класVehicle(транспортний засіб) як абстрактний тип даних.
2.1.В чому перевага віртуальних функцій над стандартними діями розпізнавання типу об’єкта в процесі виконання програми?
2.1.Нехай, для створення прямокутника із заокругленими кутами використовується класRoundRect, який є похідним від двох базових класів –RectangleіCircle, які, в свою чергу, походять від спільного класуShape. Опишіть, скільки об’єктів класуShapeстворюється при створенні одного об’єкта класуRoundRect.
2.1.Обчислити значення що залишаться в змінних a, b після виконання операторів: a:=1.4; b:=a*5+2.5; a:=(a/2-2*b)*2-a;
2.1.Оголосіть класVehicle(транспортний засіб) як абстрактний тип даних.
2.1.Описати змінну abc як матрицю з 10 рядками і 15 стовпцями елементів типу real.
2.1.Перевантажтеoperator+для змінних типуshort int.
2.1. Перевантажтеoperator++так, щоб він виконував операцію декременту (зменшення).
2.1.Чи наслідуються дані і функції-члени базового класу в похідних класах? Якщо класDogпоходить від класуMammal, а класMammal– від класуAnimals, то чи унаслідує класDogдані і функції класуAnimals? Наведіть приклад програми.
2.1.Чим відрізняється оператор непрямого доступу (*) від оператора звертання за адресою (&)? Наведіть приклади.
2.1.Як називаються стандартні операції збільшення на одиницю і зменшення на одиницю і як вони записуються на мовіC?
2.1.Якщо класDogпоходить від класуMammal, а класMammal– від класуAnimalі Mammal переозначує функцію класу Animal, то яку версію функції отримає клас Dog – базову (відAnimal) чи переозначену (відMammal)? Наведіть приклад.
2.1. Запишіть як виглядає оголошення віртуального конструктора класуA?
2.1.Оголосіть клас Vehicle (транспортний засіб) як абстрактний тип даних.
2.1.Описати в чому різниця між віртуальною функцією і віртуальним наслідування.
2.1.Як описуються двовимірні масиви? Написати приклад опису двовимірного масиву.