К каким методам и атрибутам базового класса имеет доступ производный класс?
public
 
private
 
protected
 
Объявлены классы:
class A { public: int a; A() { a = 0; }; }; class B : public A { public: B():A() {}; }; class C : protected A { public: C():A() {}; }; class D : private A { public: D():A(){}; }; Созданы объекты и ссылки: B* b = new B; C* c = new C; D* d = new D; Какие из следующих операторов приведут к ошибкам компиляции?
A* p;
 
b->a = 7;
 
A* p = b;
 
c->a = 7;
 
A* p = (A*)c;
 
d->a = 7;
 
A* p = d;
 
Если записано
class A { public: void f() { cout << 1; } }; class B : public A { public: void f() { cout << 2; } }; то что будет напечатано?B b; b.f();
2
 
2 1
 
1 2
 
1
 
Определите результат работы данной программы для
A a; B b; b.f();
class A { public: void f() { cout << 5; } }; class B : public A { public: void f() { cout << 6; } };
Верен ли данный код:
class A { public: void f() { cout << 5; } }; class B : public A { public: void f() { cout << 6; } };
Если записано
class A { public: void f() { cout << 1; } }; class B : public A { public: void f() { cout << 2; } }; то что будет напечатано?B b; A& a=b; a.f();
2 1
 
1 2
 
1
 
Что обозначает запись
class A { virtual f() = 0; };
?
В каком порядке вызываются конструкторы и деструкторы?
Конструктор базового класса Деструктор базового класса Конструктор производного класса Деструктор производного класса
Имеется программный код:
class A { public : int a, b; protected : int z; private : short i; } A1; class B : public A { private : int k; int func (float d); } B1; Выберите для него верные определения функцииfunc
:1. int B::func(float d) { B1.i = b + a; return b; } 2. int B::func(float d) { k = this.b + a; return b; } 3. int B::func(float d) { B1.z = this->b + a; return b; }
1
 
2
 
3
 
Что будет выведено на экран?
class A { public: A() { x = 1; }; int f() { return x; }; protected: int x; }; class B { public: B() { x = 2; }; int f() { return x; }; protected: int x; }; class C : public A, public B { }; C* c = new C; cout << c->f(); delete c;
1
 
2
 
Какие операторы можно использовать для выделения и освобождения динамической памяти?
new, delete
 
malloc, delete
 
new, free
 
malloc, free
 
Какие библиотечные функции можно использовать для выделения и освобождения динамической памяти?
new, delete
 
malloc, delete
 
new, free
 
malloc, free
 
Имеется запись (monstr
- базовый класс,daemon
- производный):// Описывается указатель на базовый класс: monstr *р: // Указатель ссылается на объект производного класса: р = new daemon: При выполнении виртуального методаp->draw(1, 1, 1, 1);
будет вызван
monstr
 
daemon
 
monstr
 
Для чего нужны виртуальные базовые классы?
Объявлены классы:
class base { int x, y; public: int fun(); }; class derived: protected base { int z; public: int fun1(); }; Определите тип доступа из классаderived
к членамx, y, fun
классаbase
.
x,y
– недоступны, fun – protected
 
x,y – private, fun - protected
 
x,y, fun – protected
 
Определены классы:
class base { int x, y; public: int getx() { return x; } int gety() { return y; } }; class Derived : private base { int z; public: int getz() { return z; } base::getx; }obj; Какой из следующих операторов приведет к ошибкам компиляции?
cout << obj.getx() << endl
 
cout << obj.gety() << endl
 
cout << obj.getz() << endl
 
Определены классы:
class base { int x, y; public: base() { x = 0; y = 0; } int getx() { return x; } int gety() { return y; } }; class Derived : private base { int z; public: Derived() : base() { z = 0; } int getz() { return z; } base::getx; }; main() { Derived *obj = new Derived; /* ??????????? */ } Какие из следующих операторов приведут к ошибкам компиляции?
cout << obj.getx() << endl;
 
cout << obj->getx() << endl;
 
cout << obj->gety() << endl;
 
Определены классы:
class base { int x, y; public: base() { x = 0; y = 0; } int getx() { return x; } int gety() { return y; } }; class Derived : protected base { int z; public: Derived() : base() { z = 0; } int getz() { return z; } base::gety; }; main() { Derived *obj = new Derived; /* ??????????? */ } Какие из следующих операторов приведут к ошибкам компиляции?
cout << (*obj).gety() << endl;
 
cout << obj->getx() << endl;
 
cout << obj.getz() << endl;
 
Выберите правильную синтаксическую конструкцию наследования:
class имя_класса : список_базовых_классов { список_элементов класса}
 
class имя_класса : : список_базовых_классов { список_элементов класса}
 
class имя_класса ( список_базовых_классов ){ список_элементов класса}
 
class имя_класса [ список_базовых_классов] { список_элементов класса}
 
Произойдет ли ошибка при компиляции этого кода?
class Channel { public: void SetNumber (int n) { number = n;}; int GetNumber() const { return number;}; int number;}; int main() { private : int n;} Channel ch; {Channel ch; ch.number = 9; ch.SetNumber(10); Channel ch2(2);}
n
 
n=10
 
Определены классы:
class A { void fun() { cout << "функция класса A\n"; } }; class B : private A { public: void fun() { cout << "функция класса B\n";} }; class C : private B { public: void fun() { cout << "функция класса C\n";} }; Что будет напечатано в результате выполнения операторов:C *obj; obj = new C; obj->fun();
С
 
А
 
В
 
Определены классы:
class A { public: void fun() { cout << "функция класса A\n"; } }; class B: public A { public: void fun() { cout << "функция класса B\n"; } }; class C: public B { public: void fun() { cout << "функция класса C\n"; } }; Что будет напечатано в результате выполнения операторов:C obj; obj.A::fun();
С
 
А
 
В
 
Что обозначает следующая запись?class Block<int, 100>{ public: Вlоск() {р = new int [100];} ~Block {delete [ ] p;} operator int * ( ); protected: int * p; }; Block<int, 100>:: operator int *(){ return р; }
100
целых величин 
100
 
Какие функции называются чисто виртуальными?
private
 
=0
 
Что обозначает следующая запись?
class В{ / * ... * / }; class С: public В{ /* ... */ }; С* с = new С; В* b = dynamic_cast<B*>(c);
Дано определение классов:
class MyClass0 { public: int x; //... }; class MyClass1 : MyClass0 { //... }; Какой статус доступа будет иметь компонент"x"
класса"MyClass0"
в производном классе"MyClass1"
?
public
 
protected
 
private
 
Выберите правильные утверждения относительно следующего кода:class hero{ friend class mistress; } class mistress{ void f1 (); void f2(); }
f1
является дружественной по отношению к классу hero
 
f2
является дружественной по отношению к классу hero
 
f1
не является дружественной по отношению к классу hero
 
f2
не является дружественной по отношению к классу hero
 
Можно ли осуществить явное преобразование типа объекта к типу абстрактного класса?
Каков будет результат , если конструктор абстрактного класса вызовет чисто виртуальную функцию?
Может ли конструктор быть виртуальным?
Можно ли создать виртуальную функцию, имитирующую виртуальный конструктор?
Можно ли использовать виртуальную функцию, имитирующую виртуальный конструктор, для размножения объектов?
Что будет напечатано в результате работы программы:
class A { public: A() { cout << "A "; }; virtual A* new_A() { return new A(); } }; class B : public A { public: B(){ cout << "B " ;}; A* new_A() { return new B(); } }; void fun(A* p1, A* p2) { A* p3 = p1->new_A(); A* p4 = p2->new_A(); } void main() { A* p1 = new A; B* p2 = new B; fun(p1,p2); }
A A B A A B
 
A В B A В B
 
А А А В В В