08 наследование 2
.pdf08 – 11
6)Конструктор БК → Конструкторы
композитных ДЭ в ПК→ Конструктор ПК
7)Конструкторы композитных ДЭ в ПК
8)Множественное наследование
ПОВЕДЕНИЕ ДЕСТРУКТОРОВ:
…
08 – 12
Пример:
//БК; представляет точку
//с координатами (x,y)
class Point { protected:
int x, y; public:
Point(int=0, int=0); ~Point();
};
08 – 13
Point::Point(int a, int b)
{
x = a; y = b;
cout << ”Конструктор Point: ”
<<’[’ << x << ”,” << y
<<’]’ << endl;
}
08 – 14
Point::~Point()
{
cout << ”Деструктор Point: ”
<<’[’ << x << ”,” << y
<<’]’ << endl;
}
08 – 15
//ПК; представляет круг с центром
//в точке (x,y) и радиусом radius
class Circle: public Point { protected:
float radius; public:
Circle(float=0.0, int=0, int=0); ~Circle();
};
08 – 16
//Конструктор ПК c явным вызовом
//конструктора БК
Circle::Circle(float r, int a,
int b): Point(a, b)
{
radius = r;
cout << ”Конструктор Circle: ”
<<”радиус = ” << radius
<<’ ’ << ’[’ << x << ”,”
<<y << ’]’ << endl;
}
08 – 17
Circle::~Circle()
{
cout << ”Деструктор Circle: ”
<<”радиус = ” << radius
<<’ ’ << ’[’ << x << ”,”
<<y << ’]’ << endl;
}
08 – 18
//Демонстрация вызовов конструктора и
//деструктора БК и ПК
int main()
{
{
Point p(1, 2);
//Здесь скобки { }, чтобы
//деструктор вызывался сразу,
//а не в конце функции main()
}
08 – 19
Circle circle1(4.5, 7, 9); Circle circle2(10, 5, 5); return 0;
}
08 – 20
Конструктор Point: [1,2] Десттруктор Point: [1,2] Конструктор Point: [7,9]
Конструктор Circle: радиус = 4.5 [7,9] Конструктор Point: [5,5]
Конструктор Circle: радиус = 10 [5,5] Десттруктор Circle: радиус = 10 [5,5] Десттруктор Point: [5,5]
Десттруктор Circle: радиус = 4.5 [7,9] Десттруктор Point: [7,9]