|
Лаб. 6a.
В контексте объектно-ориентированного программирования, объект некоторого класса, обычно, характеризуется данными, которые принадлежат объекту, и поведением. Поведение объектов класса определяется его методами.
Динамическое множественное наследование означает, что класс C может быть производным от класса A ИЛИ от класса B, т.е., объект класса C может вести себя либо как объект из A, либо как объект из B. Решение о том, как будет получен производный класс принимается во время выполнения программы. Язык C++, в действительности, непосредственно не поддерживает такое динамическое множественное наследование.
Ниже приведен некоторый код (программа). Необходимо выполнить и ответить на вопросы:
#include <iostream>
using namespace std;
class R
{
protected:
int r;
public:
R(int x = 0): r(x) { }
virtual void print() {cout << "class R print" << endl;}
};
class A: public R
{
protected:
int a;
public:
A(int x = 0, int y = 0): R(x), a(y) { }
void print() {cout << "class A print" << endl;}
};
class B: public R
{
protected:
int b;
public:
B(int x = 0, int z = 0): R(x), b(z) { }
void print() {cout << "class B print" << endl;}
};
enum from {A_type, B_type};
class C
{
int c;
R * rptr;
public:
C(): rptr(NULL) { } // ……
C& C_ctor(int x, int w, int z, from t) //…….
{
if (t == A_type)
{
A * aptr = new A(x, w);
rptr = aptr;
}
if (t == B_type)
{
B * bptr = new B(x, w);
rptr = bptr;
}
c = z;
return *this;
}
void print() {rptr -> print();} //…….
~C() {delete rptr;}
};
int main()
{
C c;
int n;
cout << "Enter an integer.\n";
cin >> n;
if (n % 2)
{
// c ведет себя как производный от A
c.C_ctor(1, 2, 3, A_type);
c.print();
}
else
{
// c ведет себя как производный от B
c.C_ctor(1, 2, 3, B_type);
c.print();
}
return 0;
}
//The End.
Дата добавления: 2015-11-04; просмотров: 18 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
- Une carte postale de Daniel avait annoncé son arrivée pour ce mardi, il serait là vers cinq heures, apporterait une tarte à l'ananas et attendrait Martine. Il | | | What is population of Canada? |